128 / 128 / 8 Регистрация: 24.11.2010 Сообщений: 237 |
|
1 |
|
Скрыть окна21.09.2011, 09:26. Показов 8528. Ответов 13
Есть WindowsForm приложение. Как сделать так, чтобы при его запуске не показывались формы?
0 |
6046 / 3455 / 335 Регистрация: 14.06.2009 Сообщений: 8,136 Записей в блоге: 2 |
|
21.09.2011, 09:35 |
2 |
Самый простой вариант — не писать WindowsForm приложение. Это я к тому, что вопрос нужно правильно формулировать. Что значит «не показывались»? Были в свернутом виде? Были совсем невидимыми? Не показывались в панели задач? Какая стоит задача, и что делает приложение?
0 |
128 / 128 / 8 Регистрация: 24.11.2010 Сообщений: 237 |
|
21.09.2011, 09:38 [ТС] |
3 |
приложение парсит страницы из интернета получая информацию нужную! Писать на WF начал, т.к. задумка сначала была одна. Теперь мне нужно, чтобы вызывая данную программу из другого приложения, окна не были видны везде (в панели, на рабочем столе).
0 |
6046 / 3455 / 335 Регистрация: 14.06.2009 Сообщений: 8,136 Записей в блоге: 2 |
|
21.09.2011, 09:47 |
4 |
У формы есть свойство Visible
0 |
128 / 128 / 8 Регистрация: 24.11.2010 Сообщений: 237 |
|
21.09.2011, 09:52 [ТС] |
5 |
это свойство не помогает, главная форма видима остается!
0 |
iva_a 166 / 138 / 23 Регистрация: 02.01.2011 Сообщений: 913 |
||||
21.09.2011, 13:57 |
6 |
|||
galexser, попробуйте так
}
1 |
128 / 128 / 8 Регистрация: 24.11.2010 Сообщений: 237 |
|
21.09.2011, 15:43 [ТС] |
7 |
private void button1_Click(object sender, EventArgs e) так не пойдет, нужно чтобы сразу форма была скрыта
0 |
6046 / 3455 / 335 Регистрация: 14.06.2009 Сообщений: 8,136 Записей в блоге: 2 |
|
21.09.2011, 15:52 |
8 |
galexser, зачем писать оконное приложение, если окна не должны отображаться?
0 |
128 / 128 / 8 Регистрация: 24.11.2010 Сообщений: 237 |
|
21.09.2011, 15:56 [ТС] |
9 |
Изначально планировалось использовать приложение немного в других целях
0 |
Заблокирован |
||||
21.09.2011, 16:41 |
10 |
|||
Но я обычно делаю совсем маленькое окошко, убираю заголовок и делаю это окно полностью прозначным. При запуске ничего не увидишь.
0 |
iva_a 166 / 138 / 23 Регистрация: 02.01.2011 Сообщений: 913 |
||||
26.09.2011, 12:40 |
11 |
|||
Как-то так
0 |
128 / 128 / 8 Регистрация: 24.11.2010 Сообщений: 237 |
|
26.09.2011, 12:46 [ТС] |
12 |
можно проще! Добавлено через 29 секунд
0 |
4431 / 2091 / 404 Регистрация: 27.03.2010 Сообщений: 5,657 Записей в блоге: 1 |
|
26.09.2011, 17:47 |
13 |
А разве консольное окно не появляется? У меня появляется, правда его можно скрыть при помощи WinAPI, где-то у меня был такой пример.
0 |
galexser 128 / 128 / 8 Регистрация: 24.11.2010 Сообщений: 237 |
||||
26.09.2011, 21:14 [ТС] |
14 |
|||
не появляется, в том то и прикол: надо создавать приложение WindowsForm и удалять из проекта формы и в файле Program.cs удаляем
Добавлено через 1 час 54 минуты
0 |
Asked
Viewed
1k times
I want to hide my form when I press a button inside the form. When I do this,
something must be shown in the taskbar, and if I click that thing form will again come into visible state.
Edit: I am not supposed to minimize or resize the form.
- c#
1
-
taskbar ? do you maybe mean in the system tray?
Mar 5, 2009 at 7:12
6 Answers
You have two options:
- Use the standard minimizing behavior of the Windows Forms. In your button click handler, set the
Form.WindowState
property toFormWindowState.Minimized
or just let the user use the standard minimize button. This will «hide» the form, but will leave its button on the taskbar, and the user can click it to bring the form back.
EDIT: Based on your question edit, you should use NotifyIcon
.
- Close the form and add a notify icon in the task bar notification area (aka «system tray»). To do that, you need to add an instance of the
NotifyIcon
component to your form. Then, on your button click handler, you will callForm.Close
to close the form. When the user wants to bring the form back, they will click on the syastem tray icon representing your app and you will open the form.
Here’s an VB.NET example of how to do this. It shouldn’t be hard to translate in C#. You can also search for NotifyIcon
to see more examples.
answered Mar 5, 2009 at 7:22
Franci PenovFranci Penov
75.1k18 gold badges133 silver badges169 bronze badges
//this is Form object
//Option 1
this.Hide();
//Option 2
this.Visible = false;
answered Mar 5, 2009 at 7:23
NileshChauhanNileshChauhan
5,4792 gold badges29 silver badges43 bronze badges
Does standard minimize button comply with the requirements?
answered Mar 5, 2009 at 7:10
in the button code:
FormBorderStyle = FormBorderStyle.None;
Width = 0;
Height = 0;
in say… the Activated form event:
FormBorderStyle = FormBorderStyle.Fixed3D;
Width = 800;
Height = 500;
Would this effect be right for you?
answered Mar 5, 2009 at 7:22
White DragonWhite Dragon
1,2571 gold badge8 silver badges20 bronze badges
5
-
The question is: keep the form in the task bar and hide the form, your answer is incorrect and the code i gave gives the effect (needs changes to not size the form on load etc) So really… vote me down for giving a correct answer? are YOU kidding?
Mar 5, 2009 at 7:26
-
and yes i know the width and height change is in there.. but i took a punt on the border style being enough to ignore that requirement… hence my question «Would this effect be right for you?» But thanks for the vote down, i love you
Mar 5, 2009 at 7:28
-
Technically, overlaying Notepad on top of the form would also achieve the desired effect. Would you consider it the right approach?
Mar 5, 2009 at 7:31
-
he he, well considering the form won’t be hidden when you move notepad… no :P. the requirement for not allowing to minimize the form is weird but thats exactly the effect asked for. so in the couple of mins i had to think that code at least works.
Mar 5, 2009 at 7:37
-
Also i wholeheartedly agree the system tray is much better solution (and more standard!) if thats an option…
Mar 5, 2009 at 7:37
As nils said.
Hide();
// or
Visible = false;
NotifyIcon trayIcon;
//....
trayIcon.Visible = true;
Show/hide the trayicon depending on forms visibility.
Use the Form’s property «Opacity».
// Hide your windows frame
form1.Opacity = 0;
/*
* Your actions Here
*/
// Show your windows frame
form1.Opacity = 1.0;
- The Overflow Blog
- Featured on Meta
Related
Hot Network Questions
-
Closest in meaning to «It isn’t necessary for you to complete this by Tuesday.» — is the question’s answer wrong?
-
mv a bunch of files, but ask for each file
-
What do to with this vent?
-
Business Schengen Visa for Tourism Purpose
-
What would be an appropriate size for an interplanetary bulk cargo ship?
-
What do countries gain from UN peacekeeping deployment?
-
Beacon contract contructor seems to call address 0x02?
-
What is a safe weight for front rack + luggage for a steel race bike fork?
-
How to force the misalignment of subscript and superscript
-
Will 42.5 in vanity fit in 42 in space?
-
Idiom for unexpected solution?
-
How to plot railway tracks?
-
Sum the inverse of the successor of the square of the natural numbers
-
Assumption of Normality — do the residuals need to be normally distributed for each independent variable (or each level of an IV)?
-
Why do some Chinese shows avoid using real toponyms?
-
Colouring a rug
-
How to stop Steam trying to read from a non-existent drive?
-
How can unrelated language families exist?
-
Understanding the diffusion error of numerical schemes
-
What could be this 1990s MS-DOS (or maybe Windows) 3D FPS (Doom WAD maybe?) with floating gray spiky polyhedra that I think was set in cyberspace?
-
What does «I had found the time to hover at some half a dozen jewellers’ windows» mean in this context?
-
Why did Vincent risk his chance of going to space by giving his true urine sample to Dr. Lamar in the last scene?
-
Electric Dryer Issue: Clothes Damp in Sensor Drying Mode
-
How to take good photos of stars out of a cockpit window using the Samsung 21 ultra?
more hot questions
Question feed
Your privacy
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
I am trying to make a desktop application that will be hidden but will display only after a time interval. I am trying to set Visible =false at window load event but it still displays.
Rick Sladkey
34k6 gold badges71 silver badges95 bronze badges
asked Dec 29, 2010 at 17:49
Tasawer KhanTasawer Khan
6,0247 gold badges46 silver badges69 bronze badges
1
The Visible property is a big deal in Winforms, setting it to true is what causes the native Windows window to be created. One side effect of which is that setting it to false in the OnLoad method or Load event doesn’t work. There’s nothing special about Hide(), it just sets Visible to false and thus doesn’t work either.
Overriding SetVisibleCore() is a way to do it. It is however important that you still let the native window get created. You cannot Close() the form otherwise. Make it look like this:
protected override void SetVisibleCore(bool value) {
if (!IsHandleCreated && value) {
value = false;
CreateHandle();
}
base.SetVisibleCore(value);
}
You can now call Show() or set Visible = true to make the window visible any time you wish. And call Close() even if you never made it visible. This is a good way to implement a NotifyIcon with a popup window that only is shown through a context menu.
Do note that this has a side-effect, the OnLoad() method and Load event won’t run until the first time it actually gets visible. You may need to move code.
answered Dec 29, 2010 at 18:18
Hans PassantHans Passant
924k146 gold badges1696 silver badges2536 bronze badges
For WinForms applications I have found that the easiest way to control the start-up visibility is to override the SetVisbileCore method.
Here is a simple example, the form will show after 5 seconds
using System;
using System.Windows.Forms;
namespace DelayedShow
{
public partial class Form1 : Form
{
private bool _canShow = false;
private Timer _timer;
public Form1()
{
InitializeComponent();
_timer = new Timer();
_timer.Interval = 5000;
_timer.Tick += new EventHandler(timer_Tick);
_timer.Enabled = true;
}
void timer_Tick(object sender, EventArgs e)
{
_canShow = true;
Visible = true;
}
protected override void SetVisibleCore(bool value)
{
if (_canShow)
{
base.SetVisibleCore(value);
}
else
{
base.SetVisibleCore(false);
}
}
}
}
SwDevMan81
48.9k22 gold badges151 silver badges184 bronze badges
answered Dec 29, 2010 at 18:00
Chris TaylorChris Taylor
52.7k10 gold badges78 silver badges89 bronze badges
2
you can try this as well..
public partial class Form1 : Form
{
public delegate void myHidingDelegate();
public Form1()
{
InitializeComponent();
myHidingDelegate dlg = new myHidingDelegate(mymethodcall);
dlg.BeginInvoke(null, null);
}
public void mymethodcall()
{
myHidingDelegate dlg1 = new myHidingDelegate(HideForm);
this.Invoke(dlg1);
}
public void HideForm()
{ this.Hide(); }
}
The only issue with this: Form flickers for a moment and disappears
answered Feb 3, 2011 at 12:12
Did you try this.Hide()
instead of Visible = false
?
Also another option can be to start the application without passing any form object in it.
Application.Run();
Wait for some time (using a Timer
), and open your form.
answered Dec 29, 2010 at 18:04
decyclonedecyclone
30.4k6 gold badges63 silver badges80 bronze badges
4
In your Main
method, using Application.Run()
instead of Application.Run(new Form1())
. Then at some later time use new Form1()
and form1.Show()
.
answered Dec 29, 2010 at 18:03
Rick SladkeyRick Sladkey
34k6 gold badges71 silver badges95 bronze badges
Placing Your C# Application in the System Tray
- To get started, open an existing C# Windows form (or create a new one).
- Open the Visual Studio Toolbox.
- Drag a NotifyIcon control onto the form. The control will named notifyIcon1 by default and placed below the form because it has no visual representation on the form itself.
- Set the NotifyIcon control’s Text property to the name you want to appear when the user pauses the mouse over the application’s icon. For example, this value could be «KillerApp 1.0».
- Set the control’s Icon property to the icon that you want to appear in the System Tray.
Tip: If you have a BMP file that you
want to convert to an icon file, I
highly recommend the QTam Bitmap to
Icon 3.5 application.
— Add an event handler for the form’s Resize event that will hide the application when it’s minimized. That way, it won’t appear on the task bar.
private void Form1_Resize(object sender, System.EventArgs e)
{
if (FormWindowState.Minimized == WindowState)
Hide();
}
— Add an event handler for the NotifyIcon.DoubleClick event and code it as follows so that the application will be restored when the icon is double-clicked.
private void notifyIcon1_DoubleClick(object sender,
System.EventArgs e)
{
Show();
WindowState = FormWindowState.Normal;
}
answered Dec 29, 2010 at 18:34
WinForms открыть/скрыть окна
WinForms — это Windows Forms, технология создания пользовательских окон и диалоговых окон в приложениях на платформе .NET Framework от Microsoft. WinForms позволяет легко и быстро создавать пользовательский интерфейс, задавать расположение элементов управления и обрабатывать пользовательский ввод. В данной статье мы рассмотрим, как открывать и скрывать окна в WinForms.
Открытие окна
Открытие окна в WinForms можно осуществить несколькими способами. Рассмотрим каждый из них подробнее.
1. Создание экземпляра класса формы и вызов метода Show или ShowDialog.
Первый способ открытия окна — это создание экземпляра класса формы и вызов метода Show или ShowDialog. Метод Show открывает форму и продолжает работу программы, не останавливая ее выполнение. Метод ShowDialog же открывает форму и блокирует выполнение программы до закрытия окна.
В качестве примера создадим форму Form1 с одной кнопкой и обработчиком события Click, который вызывает метод Show у другой формы Form2:
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 form2 = new Form2(); form2.Show(); } }
2. Использование метода Application.Run для запуска главной формы.
Второй способ — это использование метода Application.Run для запуска главной формы. Если мы имеем несколько форм, то одну из них можно назвать главной, и приложение будет запускаться с этой формы.
В качестве примера создадим две формы — Form1 и Form2. В Form1 создадим кнопку, которая будет открывать Form2. В методе Main мы создадим экземпляр Form1 и вызовем метод Application.Run:
static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Form1 form1 = new Form1(); Application.Run(form1); } } public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 form2 = new Form2(); form2.Show(); } }
3. Использование метода Form.ShowDialog.
Третий способ — использование метода Form.ShowDialog. Этот метод открывает диалоговое окно, которое блокирует выполнение приложения, пока окно не будет закрыто.
В качестве примера создадим форму Form1 с кнопкой, которая будет открывать диалоговое окно Form2:
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 form2 = new Form2(); form2.ShowDialog(); } }
Скрытие окна
Скрыть окно в WinForms можно несколькими способами. Рассмотрим каждый из них подробнее.
1. Использование метода Form.Hide.
Первый способ скрытия окна — это использование метода Form.Hide. Данный метод скрывает окно, но приложение продолжает работать.
В качестве примера создадим форму Form1 с кнопкой, которая будет скрывать форму:
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { this.Hide(); } }
2. Использование метода Form.Close.
Второй способ — это использование метода Form.Close. Данный метод закрывает окно и освобождает все ресурсы, связанные с этим окном.
В качестве примера создадим форму Form1 с кнопкой, которая будет закрывать форму:
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { this.Close(); } }
3. Использование свойства Form.Visible.
Третий способ — это использование свойства Form.Visible. Данное свойство определяет, видимо ли окно. Если значение свойства равно false, то окно скрыто, иначе — открыто.
В качестве примера создадим форму Form1 с кнопкой, которая будет менять значение свойства Visible формы Form2:
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 form2 = new Form2(); form2.Visible = !form2.Visible; } }
Вывод
В данной статье мы рассмотрели три способа открытия окон и три способа скрытия окон в WinForms. Каждый из них имеет свои особенности и используется в зависимости от требований приложения. С помощью WinForms легко и быстро создавать интерфейсы для Windows-приложений, что делает эту технологию очень популярной и востребованной среди разработчиков.
Step 1: Click New Project, then select Visual C# on the left, then Windows and then select Windows Forms Application. Name your project «HideApplication» and then click OK
Step 2: Open your form, then add code to Show and Load event handler as below
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading; namespace HideApplication { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Shown(object sender, EventArgs e) { //Hide your windows forms application this.Hide(); } private void Form1_Load(object sender, EventArgs e) { Thread.Sleep(5000);//5s MessageBox.Show("You can't see me !", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information); } } }
VIDEO TUTORIALS