C#里为什么同样的代码toolStripButton与button执行的结果却不一样?

csdn_shb 2020-01-12 01:52:38
请问VS 2017 C#里为什么toolStripButton对一个绘图控件不起作用啊?而button却可以,里面的代码一模一样。如何解决呢?

//这是toolStripButton按钮事件。
private void btnRect_Click(object sender, EventArgs e)
{
formDesign.vgFormDesign.vg.NewUnit(0, "rect");
}
//另一个button里面的代码一样。
private void button1_Click(object sender, EventArgs e)
{
formDesign.vgFormDesign.vg.NewUnit(0, "rect");
}


...全文
247 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdn_shb 2020-01-16
  • 打赏
  • 举报
回复
利用委托解决 BeginInvoke(new Action(() => formDesign.vgFormDesign.vg.NewUnit(0, "rect"))); 结帖!
csdn_shb 2020-01-16
  • 打赏
  • 举报
回复
引用 6 楼 qingfeng_hero 的回复:
试一下用Invoke
感谢,用Invoke不行,但是使用BeginInvoke可以了。
datafansbj 2020-01-13
  • 打赏
  • 举报
回复
引用 9 楼 csdn_shb 的回复:
[quote=引用 4 楼 datafansbj 的回复:]
toolStripButton 和 button 不是同一种控件,toolStripButton 继承自 Companent,button 继承自 Control,表现在 toolStripButton 没有焦点(不能使用键盘但可使用鼠标),button 有焦点(可使用键盘也可使用鼠标),在界面重绘时表现机制也是不同的。


大神感觉你的回复应该是问题的原因,请教下如何解决呢?或者有没有类似的案例可供参考下。[/quote]

强制重绘,使用 Refresh 方法试试。
csdn_shb 2020-01-13
  • 打赏
  • 举报
回复
引用 4 楼 datafansbj 的回复:
toolStripButton 和 button 不是同一种控件,toolStripButton 继承自 Companent,button 继承自 Control,表现在 toolStripButton 没有焦点(不能使用键盘但可使用鼠标),button 有焦点(可使用键盘也可使用鼠标),在界面重绘时表现机制也是不同的。
大神感觉你的回复应该是问题的原因,请教下如何解决呢?或者有没有类似的案例可供参考下。
csdn_shb 2020-01-13
  • 打赏
  • 举报
回复
可以出来,但发现个有趣的事情,在弹出MessageBox后,就可以画了,不弹出时仍然不行。
private void btnRect_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Hello Rect!");
            formDesign.vgFormDesign.vg.NewUnit(0, "rect");                    
        }
「已注销」 2020-01-13
  • 打赏
  • 举报
回复
试一下用Invoke
csdn_shb 2020-01-13
  • 打赏
  • 举报
回复
测试了跟这个没有关系,放到其它区域button也有效,而toolStripButton还是无效。
datafansbj 2020-01-13
  • 打赏
  • 举报
回复
toolStripButton 和 button 不是同一种控件,toolStripButton 继承自 Companent,button 继承自 Control,表现在 toolStripButton 没有焦点(不能使用键盘但可使用鼠标),button 有焦点(可使用键盘也可使用鼠标),在界面重绘时表现机制也是不同的。
huakai2418 2020-01-13
  • 打赏
  • 举报
回复
确实应该是Button在你的视图中,会触发视图重绘事件,而你的toolStripButton则不会,都调用下视图的invalidate试下
threenewbee 2020-01-12
  • 打赏
  • 举报
回复
估计是引发了窗体的刷新,而你绘图代码不在paint里面,画上去被擦除了
冰风漫天 2020-01-12
  • 打赏
  • 举报
回复
toolStripButton的事件里随便弹个提示框可以出来吗?先排查事件是否成功绑定及事件是否可以触发。

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧