Форум на Kuban.ru (http://forums.kuban.ru/)
-   Разработка программ (http://forums.kuban.ru/f1024/)
-   -   Ребятки, кто по .NET поможет? (http://forums.kuban.ru/f1024/rebyatki_kto_po_net_pomozhet-3423491.html)

Лаврентий 12.12.2012 12:19

Ребятки, кто по .NET поможет?
 
Суть проблемы такова: при запуске в свойстве формы есть ShowInTaskbar - false и есть WindowState - minimized. Висит себе иконка в трее и popup-меню из неё вываливается, всё работает. Теперь требуется отобразить форму, сделать там действия и обратно её скрыть (именно скрыть). Так вот, разворачиваю я её mainform.WindowState = normal, по логике свернуть обратно - присвоить опять minimized, но она именно свернётся а не скроется. А скрыть - showintaskbar, но [filolog]ёпта[/filolog], она же итак скрыта! после переопределения св-ва showintaskbar тупо умирает процесс. почему - не могу понять, дебаггер что-то ловит но знаний не хватает понять. I need help!

TVV1 12.12.2012 14:40

В delphi для скрытия формы из таскбара я использовал API функцию:
ShowWindow(Application.Handle, SW_HIDE);
причем вызов делал из обработчика OnMinimaze для формы.
Как в C# фиг его знает но я думаю что как то также ;)

spaceman 12.12.2012 14:51

[url]http://yandex.ru/yandsearch?clid=14585&text=C%23+%D1%81%D0%B2%D0%B5%D1%80%D0%BD%D1%83%D1%82%D1%8C+%D0%B2+%D1%82%D1%80%D0%B5%D0%B9&lr=35[/url]
В первой же ссылке есть код.

Лаврентий 12.12.2012 18:32

to spaceman - я именно так и делаю, проблема в том, что если писать код на событие onFormLoad "this.ShowInTaskbar = false", после компиляции иконка появляется в трее и тут же исчезает, но если в визуальном конструкторе поставить св-во формы this.ShowInTaskbar = false всё работает до изменения этого св-ва ((((

Лаврентий 12.12.2012 18:36

может это свойство нельзя переопределять когда приложение выполняется?

spaceman 13.12.2012 09:45

namespace WindowsFormsApplication1
**
public partial class Form1 : Form
**
public Form1()
**
InitializeComponent();
**

private void Form1_Load(object sender, EventArgs e)
**
this.ShowInTaskbar = false;
**

private void notifyIcon1_DoubleClick(object sender, EventArgs e)
**
if (this.Visible)
**
this.Hide();
**
else
**
this.Show();
**
**
**
**
-----
У меня все работает...
ShowInTaskbar как я понял отвечает только за то, будет ли форма отображатся в таскбаре когда она видима (после this.Hide() независимо от ShowInTaskbar в таскбаре ничего нет). Возможно из-за этого и происходит исключение.

Лаврентий 13.12.2012 11:36

Вычитал на забугорном форуме что есть какая-то особенность .net, и решением является создание contextmenu без создания формы. В общем решилось всё - проше некуда - изменил свойство opacity с 0 до 100% - неправильно, знаю, но в условии огр.кол-ва времени на разработку - самое то )


Текущее время: 12:57. Часовой пояс GMT +3.