C# 获取窗体的句柄
在winform中,有main,form1,form2,form3......窗体,在form1,form2,form3......窗体上按按钮会触发main窗体中的事件...
在winform中,有main,form1,form2,form3......窗体,在form1,form2,form3......窗体上按按钮会触发main窗体中的事件,然后在main中如何判断是哪个窗体触发的这个事件。
展开
4个回答
展开全部
你可以main中增加一个public变量,每个触发Main窗体事件的按钮代码中,都送入自己的窗口标志(或窗口句柄)
追问
你的意思是每个按钮下去都加个发送代码? 这按钮太多。。。太那个了...
追答
主窗体中:
public static IntPtr CallFrom= IntPtr.Zero;
其他窗体的按钮事件中增加:
main.CallFrom= this.Handle;//其中main是主窗体类名,不需要是实例名
这样就传入了调用窗口的句柄。
如果你不使用句柄判断,可以用string变量传入窗口名字也行
主窗体中:
public static string CallFrom;
其他窗体的按钮事件中增加:
main.CallFrom= "form1";
展开全部
比如 一个事 show(object sender, EventArgs e)
{
//如果发送者是Form
Form form=(Form)sender;
string name =form.Text; //这里就得到触发都的名称了
}
{
//如果发送者是Form
Form form=(Form)sender;
string name =form.Text; //这里就得到触发都的名称了
}
更多追问追答
追问
点击一个窗体内的按钮弄成一个事件要怎么弄,能告知下吗? 万分感谢!
追答
简单地写委托给你参考下:
在子窗体类外声明:
public delegate void SendEventHandler(object sender,string msg)// msg是你要传递的值。这
//这里用string 类型举例
在子窗体的类里面
public SendEventHandler send;
在子窗体的按钮事件里
private void button1_Click(object sender, EventArgs e)
{
send(this,"这是一个窗体传值问题");
}
在main窗体里声明
private void getMsg(object sender,string msg)
{
Form form=(Form)sender;
string name =form.Text; //窗体的名称
string msg =msg; //子窗体传递的字符串
}
创建子窗体时如
form1 f1=new form1();
f1.send=new SendEventHandler(getMsg) ;
f1.show();
程序完成后。当你点击button1。main窗体的getMsg方法就会得到发送者和传递的字符串
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Handle属性可以获取窗口得句柄
Form1 form=new Form1();
form.Handle
Form1 form=new Form1();
form.Handle
追问
我不知道是哪个窗体,from怎么获得。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
根据不同ID的Button点击事件就可以判断呀!
追问
根据button的id来判断button所在哪个窗体吗?
追答
详细代码 :
住窗体Form_Main:
public partial class Form_Main : Form
{
public Form_Main()
{
InitializeComponent();
}
private void btn_to_f1_Click(object sender, EventArgs e)
{
Form1 f1 = new Form1();
f1.Show();
this.Hide();
}
private void btn_to_f2_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Show();
this.Hide();
}
private void btn_close_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
副窗体Form1:(Form2,Form3,Form4 ....与Form1同样的处理方式)
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btn_f1_Click(object sender, EventArgs e)
{
Form_Main fm = new Form_Main();
fm.Show();
fm.tb_msg.Text = this.Text;
this.Close();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询