C#中,用户控件UserControl里面用Panl加载UserControl,并实现利用委托互相传值

用户控件主窗体结构:左侧树形菜单,右侧Panl;

根据点击的菜单节点,panl里面选择性加载某一个子窗体用户控件,并传值给子窗体;

反之,在子窗体进行相应的操作之后,传值给主窗体,触发主窗体的刷新。

首先,主窗体传值给子窗体,只需创建一个子窗体的对象,用对象去访问子窗体的公开属性及方法,可以在子窗体中定义一个参数变量,在主窗体调用时直接传值给子窗体。

其次,在子窗体触发事件,需要主窗体同步刷新时,就需要利用委托来传递值。

下面是用委托的具体方法:

 

在子窗体中定义一个委托:

public delegate void SelectEvent1(string Date, string eleId);
public SelectEvent1 AfterSelectEvent1;//这里可以用event关键字修饰,也可以不用,区别是:在调用时,event事件必须用+=去赋值,不用event,则直接用=即可

 

在主窗体中定义一个与此委托一致的方法://参数类型,个数相同

private void Uc_AfterSelectEvent1(string Date, string EleId)
{
DATE = Date;
ELEID = EleId;
GetTreeListData(DATE);//刷新树形菜单的方法
}

在主窗体调用子窗体时,将此方法赋值给子窗体的委托:

uc.AfterSelectEvent1 = Uc_AfterSelectEvent1;//uc是子窗体的对象

 

在子窗体中,需要触发主窗体同步刷新的事件中添加自定义委托:(传值)

AfterSelectEvent1(date_DATE.Text, txt_eleId.Text);

结束,这样就完成了利用委托将子窗体的值传给主窗体。

 

转载于:https://www.cnblogs.com/jiuyueBlog/p/9066001.html

C#,如果你想要在Form1创建一个UDP接收端并在接收到数据时切换到Form2并改变Panel的背景图片,你需要做以下几个步骤: 首先,在Form1添加必要的事件处理和基本的UDP接收功能: ```csharp using System.Net; using System.Net.Sockets; using System.Threading; private UdpClient udpReceive; private Form2 form2; private Thread udpThread; public Form1() { InitializeComponent(); // 初始化接收者 udpReceive = new UdpClient(YourListenPort); // 替换为你的监听端口 // 建立到Form2的引用 if (Application.OpenForms.Contains("Form2")) form2 = (Form2)Application.OpenForms["Form2"]; else { form2 = new Form2(); // 如果Form2尚未打开则创建新实例 Application.AddForm(form2); // 添加到应用程序上下文 } // 启动接收线程 udpThread = new Thread(ReceiveData); udpThread.Start(); } private void ReceiveData() { while (true) { IPEndPoint remoteEP = udpReceive.Received.EndPoint; string message = Encoding.ASCII.GetString(udpReceive.Received.Buffer); // 收到数据后在线程更新Form2 Invoke(new Action(() => OnReceivedMessage(message, remoteEP))); } } // 在这里添加OnReceivedMessage方法 private delegate void OnReceivedMessageDelegate(string message, IPEndPoint ep); private void OnReceivedMessage(string message, IPEndPoint ep) { if (form2 != null) { // 更新Form2 Panel的背景图片 form2.ChangePanelBackground(message); // 假设ChangePanelBackground是你的自定义方法 // 切换到Form2 this.Hide(); form2.Show(); } } ``` 注意替换`YourListenPort`为你想监听的端口。同时,确保在Form2有一个方法`ChangePanelBackground(string imageUrl)`来接受图片URL并更新Panel背景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值