winform中把控件当参数传递,该怎么解决
winform中把控件当参数传递
winform中把控件当参数传递之后。控件就和这个方法绑定,在窗体上这个控件的值改变,在方法里对应的值也改变。这个方法将输出不同的值。这种功能该怎么实现?
我不要这个控件的改变事件去重新调用这个方法。
------解决思路----------------------
并非把控件传递给谁,请改变你的思维方式,正确的思维方式是 UI 和逻辑 公用数据,所以是把数据双向绑定
那么一个简单代码就出来了
将myint和textbox1双向绑定,初始运行textbox1自然显示为0,然后你随便在textbox1里面输入1234,当你鼠标离开太textbox1滴时候myint自然就为你输入的1234,为了测试我们多加一个按钮button1,点击button1我们show一下myint滴值,你会发现myint已经变成了你刚刚输入的1234了(ps:这其实也就现在那些人号称的响应式编程和“高端大气”的MVVM方式编程)
------解决思路----------------------
注册OnValueChanged事件
winform中把控件当参数传递之后。控件就和这个方法绑定,在窗体上这个控件的值改变,在方法里对应的值也改变。这个方法将输出不同的值。这种功能该怎么实现?
我不要这个控件的改变事件去重新调用这个方法。
------解决思路----------------------
并非把控件传递给谁,请改变你的思维方式,正确的思维方式是 UI 和逻辑 公用数据,所以是把数据双向绑定
那么一个简单代码就出来了
public int myInt { get; set; }
private void Form1_Load(object sender, EventArgs e)
{
this.textBox1.DataBindings.Add("Text", this, "myInt");
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(myInt.ToString());
}
将myint和textbox1双向绑定,初始运行textbox1自然显示为0,然后你随便在textbox1里面输入1234,当你鼠标离开太textbox1滴时候myint自然就为你输入的1234,为了测试我们多加一个按钮button1,点击button1我们show一下myint滴值,你会发现myint已经变成了你刚刚输入的1234了(ps:这其实也就现在那些人号称的响应式编程和“高端大气”的MVVM方式编程)
------解决思路----------------------
class Event
{
public delegate void ValueChanged(object sender, EventArgs e);
public event ValueChanged OnValueChanged;
string myInt = String.Empty;
public string MyInt
{
get
{
return myInt;
}
set
{
if (myInt != value)
{
OnValueChanged(this, new EventArgs());
}
myInt = value;
}
}
}
注册OnValueChanged事件