社区
C#
帖子详情
各位大虾请发表看法, TreeView事件是不是设计的有问题??
rock1981
2004-01-08 03:10:31
C#的WinForm下的程系中
我的窗体上有一个TreeView 控件 和一个TextBox控件
我要在TreeView 的节点被选择之前触发TextBox 的Validating事件。
现在问题是TextBox 的Validating事件在TreeView的AfterSelect 事件后才被触发。
这样合理吗??
以前VC中好像这种验证事件应该是在树节点的被选择之前触发。
各位说说看这种事件处理到底是怎样工作的???
...全文
81
6
打赏
收藏
各位大虾请发表看法, TreeView事件是不是设计的有问题??
C#的WinForm下的程系中 我的窗体上有一个TreeView 控件 和一个TextBox控件 我要在TreeView 的节点被选择之前触发TextBox 的Validating事件。 现在问题是TextBox 的Validating事件在TreeView的AfterSelect 事件后才被触发。 这样合理吗?? 以前VC中好像这种验证事件应该是在树节点的被选择之前触发。 各位说说看这种事件处理到底是怎样工作的???
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
linzsoft
2004-01-09
打赏
举报
回复
MS在设计控件的时候分把控件的激活情况分成了两个过程
Focus 和 Select
但是真正起焦点作用的是select,就是说只有当一个控件被select了,控件才是当前活动的,而Focus是为了表示控件为突出显示
你的问题可以这样理解:
当鼠标点击TreeView它获得了Focus,此时如果TreeView.SelectedNode变化了就会产生BeforeSelect事件,同时TextBox失去了Focus。
但是TextBox还是活动的,所以没有产生 Validating事件。
由于没有处理BeforeSelect事件,跟着就产生AfterSelect事件,然后TextBox失去了焦点select,这时Validating事件产生,最后TreeView被select。
但是要注意AfterSelect实际上是更改了选择的Node之后产生事件
也就是说你进行了上述的操作之后,TreeView的TreeView.SelectedNode就变成你刚才点击的
Node,即使TreeView失去了焦点变成了非活动控件的时候,TreeView.SelectedNode也不会改变,除非你选择别的Node.
至于TextBox的Validating是在TreeView的AfterSelect后面执行这样的事件触发先后顺序合不合理,
只能说,C#处理事件的顺序,是按照代码执行的逻辑顺序进行的,可能和人为的想法不一致,按照你的想法一定是TextBox失去焦点然后TreeView再在改变的,
但是他们在实际逻辑是
1: TreeView.BeforeSelect
2: TreeView.AfterSelect
3: TextBox.Leave
4: TextBox.Validating
5: TreeView.Enter
rock1981
2004-01-09
打赏
举报
回复
TO:linzsoft(邪邪)
在treeView1_AfterSelect之前(treeView1_BeforeSelect)手动的控制,让他强制执行验证
方法固然可以。但也不是最佳。^_^!我觉得合理的应该是先Validating后AfterSelect
我想知道的是为什么TextBox 的Validating是在TreeView的AfterSelect后面执行
这样的事件触发先后顺序合不合理?????????????
linzsoft
2004-01-08
打赏
举报
回复
为什么不行,你想在哪里触发就在哪里调用Validating的触发函数了。
private void treeView1_BeforeSelect(object sender, System.Windows.Forms.TreeViewCancelEventArgs e)
{
this.textBox1_Validating(this.textBox1,new System.ComponentModel.CancelEventArgs());
}
private void textBox1_Validating(object sender, System.ComponentModel.CancelEventArgs e)
{
this.textBox1.Text = "dddd4";
}
yangzhenhai
2004-01-08
打赏
举报
回复
竟然很多控件没有ing事件!
rock1981
2004-01-08
打赏
举报
回复
事件是死的,人是活的>>>>>
这个我也知道。
我是想知道这样设计事件的本意何在,或者说这是个Bug??
白掌柜
2004-01-08
打赏
举报
回复
我猜想可能是因为Validating要在TextBox失去焦点以后才能被触发。
事件是死的,人是活的,可以用别的方法来验证。
好看的Winform.
TreeView
自定义的美化
TreeView
源码和对应demo,样式好看,对初学者是很好的学习资料,然后也可用于项目中
用Html静态写的
TreeView
用Html和JavaScript静态制作的
TreeView
(树结构)。可以说是功能最全的树结构
TreeView
。实现了点击节点,改变节点前的图片。实现了树结构的展开和收缩功能。由于页面包含了许多图片和样式表,所以只能用打包的方式上传,没有办法直接
发表
在Blog中了。
Android
TreeView
在android中实现类似windows的
treeview
效果。
bootstrap树 bootstrap-
treeview
完整例子
强烈建议初次使用bootstrap的人参考,例子很全 bootstrap树控件使用bootstrap-
treeview
.js实现树前边多选框checkbox 并实现, 0、获取选中的项 1、点击父级的多选框,自己默认选中 2、全选 3、反选 4、展开、 5、折叠
c# 中
TreeView
的应用实例源代码
TreeView
一个实例的源代码!
C#
110,538
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章