可以在用户控件中添加一个事件,并在主窗体中订阅该事件。
具体做法如下:
-
在用户控件中添加一个
PictureBox
控件,并为其添加一个Click
事件。 -
在该事件中触发一个自定义事件,并传递需要的参数。
-
在主窗体中定义一个方法,用于处理自定义事件。
-
在主窗体的构造函数中订阅自定义事件。
以下是具体代码实现:
在用户控件中添加 PictureBox
控件和 Click
事件
public partial class ModbusWareHouseOneControl : UserControl
{
// 定义自定义事件
public event EventHandler<PictureBoxClickEventArgs> PictureBoxClick;
public ModbusWareHouseOneControl()
{
InitializeComponent();
}
private void pictureBox1_Click(object sender, EventArgs e)
{
// 触发自定义事件,并传递需要的参数
PictureBoxClick?.Invoke(this, new PictureBoxClickEventArgs("参数1", "参数2"));
}
}
在主窗体中定义方法,用于处理自定义事件
public partial class MainForm2 : Form
{
public MainForm2()
{
InitializeComponent();
// 订阅自定义事件
modbusWareHouseOneControl1.PictureBoxClick += ModbusWareHouseOneControl_PictureBoxClick;
}
private void ModbusWareHouseOneControl_PictureBoxClick(object sender, PictureBoxClickEventArgs e)
{
// 处理自定义事件
// ...
}
}
自定义事件的参数类型为 PictureBoxClickEventArgs
,可以根据需要自行定义。在上面的示例中,参数类型包含两个字符串类型的属性,分别为 Param1
和 Param2
。
public class PictureBoxClickEventArgs : EventArgs
{
public string Param1 { get; private set; }
public string Param2 { get; private set; }
public PictureBoxClickEventArgs(string param1, string param2)
{
this.Param1 = param1;
this.Param2 = param2;
}
}
这样,在用户控件中,当 PictureBox
被点击时,会触发自定义事件,并将参数传递给主窗体中的处理方法进行处理。
案例一:
筒仓三维超声波扫描料位计(删除用户控件用法)