2013-08-25 138 views
0

我有一个工具条和一个statusstrip,我切换它们的Visible属性。 当“关闭”时,表格被最小化为系统托盘。切换ToolStrip的可见性

private void MainForm_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     e.Cancel = true; 
     this.WindowState = FormWindowState.Minimized; 
     this.Hide(); 
    } 

我从封闭的的NotifyIcon文本菜单的应用程序,我想保存工具条(StatusStrip中)的可见性。 问题是当表单“关闭”时它们总是错误的。 是否可以区分它们何时不可见或表单是隐藏的

+1

你最好的选择是创建一个字段,如'ToolstripsVisibleWhenShwon',并设置和清除变量当用户指示条应该显示/隐藏。它会清楚地表示您正在跟踪的状态。 –

+1

Visible属性有点不寻常,当你读回来时,你会得到控件的实际状态。当您隐藏窗口时,始终* false *。你只需要保留一个额外的变量。或者在分配Visible属性时设置应用程序设置。 –

回答

1

我不太明白问题出在哪里以及如何区分表单状态。 为什么不比较FormWindowState枚举并设置组件设置?

1添加应用程序设置:

名称:可见

类型:BOOL

范围:用户

值:False

2无论在代码中设置组件属性。

if (this.WindowState == FormWindowState.Minimized) 
     { 
     toolStrip.Visible = true; 
     } 
     else 
     { 
     toolStrip.Visible = false; 
     } 

3最后保存设置

using myApplication.Properties; 
private void MainForm_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     Settings.Default.Visible = toolStrip.Visible ; 
     Settings.Default.Save(); 
    } 
+0

我想保存toolstrip.visual状态。当表单关闭时(this.Hide())toolstrip始终返回false – albert

+0

然后在this.hide()之前保存它。 hide()方法将控件的可见属性设置为false,这就是它的工作原理。在这种情况下,你隐藏表单而不是工具条。上面的代码显示了如何创建,修改和保存工具栏设置。 –