单击按钮时如何在子窗体中刷新父窗体?
然后关闭子窗体正在运行此命令:
private void listView1_MouseDoubleClick(object sender, EventArgs e) { ListViewItem item = listView1.SelectedItems[0]; string s = item.SubItems[6].Text; q = m; CommercialOfferEditProperties ob = new CommercialOfferEditProperties(s, q); ob.FormClosed += new FormClosedEventHandler(ob_FormClosed); ob.Show(); //show child } void ob_FormClosed(object sender, FormClosedEventArgs e) { some action }
但是如果在子窗体中点击按钮,如何运行动作ob_FormClosed
或运行创建的新动作?
- 将OnClick事件添加到子窗体(
CommercialOfferEditProperties
) - 在父表单中订阅。
- 每次单击子窗体按钮时触发OnClick。
这样你就可以通知家长。
例:
//Child form declaration public class CommercialOfferEditProperties:Form { public event EventHandler ButtonClicked; public void NotifyButtonClicked(EventArgs e) { if(ButtonClicked != null) ButtonClicked(this,e); } ... }
家长表格:
private void listView1_MouseDoubleClick(object sender, EventArgs e) { ListViewItem item = listView1.SelectedItems[0]; string s = item.SubItems[6].Text; q = m; CommercialOfferEditProperties ob = new CommercialOfferEditProperties(s, q); ob.FormClosed += new FormClosedEventHandler(ob_FormClosed); ob.ButtonClicked += new EventHandler(ob_ButtonClicked); ob.Show(); //show child } void ob_FormClosed(object sender, FormClosedEventArgs e) { //process form close } void ob_ButtonClicked(object sender, EventArgs e) { //process button clicked }
您可以将该按钮声明为公共或(更好)创建一个公开显示按钮的只读属性。
public Button TheButton { get { return button1; } }
然后呢
ob.TheButton.Clicked += new ....
我相信你试图在错误的位置执行此操作…但是,实现你想要的唯一方法是将父控件传递给构造函数中的子控件或将其设置为属性(两者的BAD IDEA,for不同的原因)或者您可以添加父表单注册的事件。 然后调用Parent.Refresh()
方法。
您应该有一些类似于父窗体的代码:
ChildDialog dialog = new ChildDialog(); dialog.ShowDialog(this);
您可以添加以下代码:
if(dialog.DialogResult = DialogResult.OK) { this.Refresh(); }
注意:Dialog.OK可能需要根据子窗体的对话框结果进行更改。
上述就是C#学习教程:单击按钮时如何在子窗体中刷新父窗体?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/949852.html