C# 获取窗体的句柄

在winform中,有main,form1,form2,form3......窗体,在form1,form2,form3......窗体上按按钮会触发main窗体中的事件... 在winform中,有main,form1,form2,form3......窗体,在form1,form2,form3......窗体上按按钮会触发main窗体中的事件,然后在main中如何判断是哪个窗体触发的这个事件。 展开
 我来答
murphybao
2014-09-12 · TA获得超过1210个赞
知道小有建树答主
回答量:1002
采纳率:66%
帮助的人:540万
展开全部
你可以main中增加一个public变量,每个触发Main窗体事件的按钮代码中,都送入自己的窗口标志(或窗口句柄)
追问
你的意思是每个按钮下去都加个发送代码? 这按钮太多。。。太那个了...
追答
主窗体中:
public static IntPtr CallFrom= IntPtr.Zero;
其他窗体的按钮事件中增加:
main.CallFrom= this.Handle;//其中main是主窗体类名,不需要是实例名
这样就传入了调用窗口的句柄。
如果你不使用句柄判断,可以用string变量传入窗口名字也行
主窗体中:
public static string CallFrom;
其他窗体的按钮事件中增加:

main.CallFrom= "form1";
shuibiyy
推荐于2017-12-16 · TA获得超过1724个赞
知道小有建树答主
回答量:446
采纳率:100%
帮助的人:143万
展开全部
比如 一个事 show(object sender, EventArgs e)
{
//如果发送者是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方法就会得到发送者和传递的字符串
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
桃儿kz1濦H
2014-09-12 · TA获得超过116个赞
知道答主
回答量:126
采纳率:50%
帮助的人:107万
展开全部
Handle属性可以获取窗口得句柄
Form1 form=new Form1();
form.Handle
追问
我不知道是哪个窗体,from怎么获得。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冉MLiang
2014-09-12 · TA获得超过222个赞
知道小有建树答主
回答量:393
采纳率:71%
帮助的人:171万
展开全部
根据不同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();
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式