绑定前,不要添加该事件(设计阶段去除该控件的该事件),在绑定之后,添加该事件的委托到控件中。
如控件的事件假设为:
private void 控件_ValueChanged(.....)
{
//控件事件
}在绑定之后执行如下代码:
控件.ValueChanged += new 该事件的委托(控件_ValueChanged); 如果不知道事件的委托是什么,可以先在设计阶段添加该事件,然后打开当前类的 .Designer.cs 文件,从中找到这个控件的关于添加事件委托的代码,然后把该代码复制到绑定之后中,最后删除该事件即可。
如控件的事件假设为:
private void 控件_ValueChanged(.....)
{
//控件事件
}在绑定之后执行如下代码:
控件.ValueChanged += new 该事件的委托(控件_ValueChanged); 如果不知道事件的委托是什么,可以先在设计阶段添加该事件,然后打开当前类的 .Designer.cs 文件,从中找到这个控件的关于添加事件委托的代码,然后把该代码复制到绑定之后中,最后删除该事件即可。
解决方案 »
- Illegal characters in path
- 我想C#实现端口复用,百度上的根本就不好使。
- C#为什么不让改变comboBox;maskedTextBox控件的高度?
- 简单的datagrid问题,解决马上给分
- 发布一个用于抓取和分析网页的类的源码
- 试着用电驴共享了一本电子书《C# 2008数据库入门经典(第4版)》大家测试一下是否可用
- 重金悬赏(快)(回答全部问题给100)
- 一个程序调用一个函数,如果这个函数内(catch)出错,怎样退出整个程序?
- dropdownlist问题
- Dev ASPxDropDownEdit控件如何实现Button样式
- 一个关于数据库的问题?
- 用C#写一个程序
1、数据绑定通过编程方法实现,目的是为了多次更改绑定,难不成也多次添加该事件的委托?
2、就按该方法,我做过测试,还是会触发该事件,以下是测试的代码片断(先绑定,后添加委托),在Designer.cs 无ValueChanged的重复委托。numericUpDown1.DataBindings.Add("Value", _rGZSC, "XSZS");
numericUpDown1.ValueChanged += new System.EventHandler(ValueChanged);void ValueChanged(object sender, EventArgs e)
{
DataChanged(this, new EventArgs());
}
if(!控件.Focused) return;
当然我的写法是比较投机取巧,楼主可根据自己的实际情况而定
{
if (!IfBounded) return;
DataChanged(this, new EventArgs());
}在重新绑定之前,设为false,绑定完之后设为true,不知道这种方法可不可行。private void bounddata()
{
IfBounded=false;
绑定数据源....
IfBounded=true;
}
数据绑定
+= ValueChanged不就行了
bounddata 与ValueChanged 是在同一线程中,只有当bounddata执行完后才会触发ValueChanged事件,所以IfBounded的值永远是true,该方法除非用多线程实现。但多线程编程的工作量太大,而且控制比较困难。
我记得以前好像用过一个方法,可以在控件或数据加载时,暂停控件的事件触发,只是想不起用什么方法了,或是VB中有该功能,或者说这个记忆就是错的。
回复3楼:
你的方法,粗一想,行不通;但细想也对,当手动更改控件值时,该控件是有焦点的。不过,如果2个控件是有连带关系,当手动修改其中一控件,而带动另一控件的值时,那将无法获得正确的结果。
private void button1_click(object sender, EventArgs e)
{
textbox1.text="aaa";
Console.WriteLine("button1_click");
}private void textbox1_textchanged(object sender, EventArgs e)
{
Console.WriteLine("textbox1_textchanged");
}我在点击button1时,输出的结果是:
textbox1_textchanged
button1_click也就是说在给textbox1赋值时先触发了textchanged事件,然后继续下面的代码,不知我这样的解释合理不?
这里实现数据的绑定。
textBox1.TextChanged += textBox1_TextChanged;
我测试过了,不会触发事件