Cra*_*893 61 c# user-controls event-handling winforms
我有一个自定义用户控件,我想做一些相对简单的事情.
当用户控件的值发生变化时,如果数字向下,请让主窗体更新显示窗口.
如果NUD不在用户控件中,这不是问题,但我似乎无法弄清楚如何通过mainform而不是usercontrol处理事件.
Jam*_*son 125
您需要为触发用户控件中的事件时引发的用户控件创建事件处理程序.这将允许您将事件冒泡到链中,以便您可以从表单处理事件.
单击Button1UserControl时,我将Button1_Click触发UserControl_ButtonClick表单上的触发器:
用户控制:
public event EventHandler ButtonClick;
protected void Button1_Click(object sender, EventArgs e)
{
//bubble the event up to the parent
if (this.ButtonClick!= null)
this.ButtonClick(this, e);
}
Run Code Online (Sandbox Code Playgroud)
形成:
UserControl1.ButtonClick += new EventHandler(UserControl_ButtonClick);
protected void UserControl_ButtonClick(object sender, EventArgs e)
{
//handle the event
}
Run Code Online (Sandbox Code Playgroud)
Lar*_*ech 20
尝试映射它.尝试将此代码放入您的UserControl:
public event EventHandler ValueChanged {
add { numericUpDown1.ValueChanged += value; }
remove { numericUpDown1.ValueChanged -= value; }
}
Run Code Online (Sandbox Code Playgroud)
然后你UserControl将拥有ValueChanged你通常在NumericUpDown控件中看到的事件.
Eni*_*ate 11
你可以这样做.....下面的例子显示文本框(用户控件)值已更改
// Declare a delegate
public delegate void ValueChangedEventHandler(object sender, ValueChangedEventArgs e);
public partial class SampleUserControl : TextBox
{
public SampleUserControl()
{
InitializeComponent();
}
// Declare an event
public event ValueChangedEventHandler ValueChanged;
protected virtual void OnValueChanged(ValueChangedEventArgs e)
{
if (ValueChanged != null)
ValueChanged(this,e);
}
private void SampleUserControl_TextChanged(object sender, EventArgs e)
{
TextBox tb = (TextBox)sender;
int value;
if (!int.TryParse(tb.Text, out value))
value = 0;
// Raise the event
OnValueChanged( new ValueChangedEventArgs(value));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
124528 次 |
| 最近记录: |