C# 如何让控件销毁时执行某些代码
点击主页面A上的按钮,跳出控件B。我希望控件B退出时,执行某些代码XXXX来对主页面进行某些改变。我这些代码XXX应该写在哪个地方?3ks另外如果我希望控件B退出时能返回...
点击主页面A上的 按钮,跳出控件B。我希望控件B退出时,执行某些代码XXXX来对主页面进行某些改变。我这些代码XXX应该写在哪个地方?3ks另外如果我希望控件B退出时能返回一些值,这个怎么实现呢?谢谢大家
展开
2个回答
2013-05-20
展开全部
--------------------------------------------------------------------------提问人的追问 2009-07-01 11:40 B是控件,不是窗体。
:A窗体产生B控件,在B控件上设置一些参数,然后B控件销毁。
我希望B控件销毁后刷新A上面的一些lable之类的东西。
我现在使用的是这种方式:
productEdit.Disposed +=new EventHandler(productEdit_Disposed);
private void productEdit_Disposed()
{
//在这里写刷新代码
//然后B控件中的设置的值不知道怎么返回A界面来……
} --------------------------------------------------------------------------- 你可以这样写试试看: 1,先在productEdit里添加下面的代码: public delegate void MyHandler(object obj);
public MyHandler ParamHandler; private void productEdit_Disposed()
{
//这里这样写!!!!!!!!!!! if (ParamHandler != null)
{
ParamHandler(value);//value为productEdit任何属性!,填入你想传入得任何想传的东东!
}
} 2 ,然后,在A窗口:----------------------------------this.Controls.Add(productEdit);
productEdit.BringToFront();
MessageBox.Show("XXXX");//比如我的代码是这个----------------------------------------- 给productEdit的ParamHandler属性赋一个值: productEdit.ParamHandler = delegate(object obj)
{
//obj为productEdit里的传过来的东东! //举个例子:如果obj为string类型,label1为A窗口类的控件; //那么你可以这样写:this.label1.Text = obj.ToString();就ok! }; 如果还有不明白的地方再问我.
:A窗体产生B控件,在B控件上设置一些参数,然后B控件销毁。
我希望B控件销毁后刷新A上面的一些lable之类的东西。
我现在使用的是这种方式:
productEdit.Disposed +=new EventHandler(productEdit_Disposed);
private void productEdit_Disposed()
{
//在这里写刷新代码
//然后B控件中的设置的值不知道怎么返回A界面来……
} --------------------------------------------------------------------------- 你可以这样写试试看: 1,先在productEdit里添加下面的代码: public delegate void MyHandler(object obj);
public MyHandler ParamHandler; private void productEdit_Disposed()
{
//这里这样写!!!!!!!!!!! if (ParamHandler != null)
{
ParamHandler(value);//value为productEdit任何属性!,填入你想传入得任何想传的东东!
}
} 2 ,然后,在A窗口:----------------------------------this.Controls.Add(productEdit);
productEdit.BringToFront();
MessageBox.Show("XXXX");//比如我的代码是这个----------------------------------------- 给productEdit的ParamHandler属性赋一个值: productEdit.ParamHandler = delegate(object obj)
{
//obj为productEdit里的传过来的东东! //举个例子:如果obj为string类型,label1为A窗口类的控件; //那么你可以这样写:this.label1.Text = obj.ToString();就ok! }; 如果还有不明白的地方再问我.
推荐于2017-12-16
展开全部
只能用代理做了~
///窗体一
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
//把form2的setText事件交给form1的GetText(string text)方法处理。
f2.Test += new Form2.SetText(GetText);
f2.ShowDialog();
}
public void GetText(string text)
{
string value = text;
this.button1.Text = value;
}
}
/**************************************************************/
//窗体二
public partial class Form2 : Form
{
//第一种方法就是代理。
public delegate void SetText(string text);
public event SetText Test;
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
// 第一种方法
if (Test != null)
{
Test(textBox1.Text);
}
this.Close();
}
}
你可以建立出来试试就知道了~~~~
///窗体一
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
//把form2的setText事件交给form1的GetText(string text)方法处理。
f2.Test += new Form2.SetText(GetText);
f2.ShowDialog();
}
public void GetText(string text)
{
string value = text;
this.button1.Text = value;
}
}
/**************************************************************/
//窗体二
public partial class Form2 : Form
{
//第一种方法就是代理。
public delegate void SetText(string text);
public event SetText Test;
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
// 第一种方法
if (Test != null)
{
Test(textBox1.Text);
}
this.Close();
}
}
你可以建立出来试试就知道了~~~~
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询