WinForms:toolStripButton点击函数仅生效一次,重启程序后方可恢复
WinForms面板可见性切换问题修复
你的代码核心问题是把赋值运算符=当成了比较运算符==,这直接导致逻辑完全错乱:
原代码的执行逻辑(每次点击按钮)
private void toolStripButton7_Click(object sender, EventArgs e) { // 这里不是判断Visible是否为false,而是直接把Visible设为false,赋值结果为false,所以这个if块永远不会执行 if(panel1.Visible = false) { panel1.Visible = true; } // 这里直接把Visible设为true,赋值结果为true,执行块内代码把Visible设为false if (panel1.Visible = true) { panel1.Visible=false; } }
第一次点击后,panel1.Visible会被最终设为false;后续每次点击,都会先把它设为false,再设为true,最后又设回false,所以看起来完全没反应。
你改成else分支后问题依旧,本质还是没改掉=和==的错误,比如如果写成:
if(panel1.Visible = false) { panel1.Visible = true; } else { panel1.Visible = false; }
这里依旧是先把Visible设为false,判断结果为false后进入else分支,再次把它设为false,所以面板被隐藏后永远无法显示。
正确的修复方式
最简洁且不易出错的写法是直接对Visible属性取反:
private void toolStripButton7_Click(object sender, EventArgs e) { panel1.Visible = !panel1.Visible; }
如果一定要用条件判断,必须用==做比较:
private void toolStripButton7_Click(object sender, EventArgs e) { if(panel1.Visible == false) { panel1.Visible = true; } else { panel1.Visible = false; } }
内容的提问来源于stack exchange,提问作者CactusMan
相关产品推荐
相关产品推荐

