今天做了一個winfrom 程序
一個父窗体,2个子窗体
子窗体在父窗体中显示
父窗体有个toolstrip
toolstrip 中有两个按钮,分别对应两个子窗体
怎么点击一个子窗体后让他前一个子窗体关闭,并且新出现的子窗体的位置和上个子窗体一样
新手...能具体点最好..
谢谢各位大侠
一個父窗体,2个子窗体
子窗体在父窗体中显示
父窗体有个toolstrip
toolstrip 中有两个按钮,分别对应两个子窗体
怎么点击一个子窗体后让他前一个子窗体关闭,并且新出现的子窗体的位置和上个子窗体一样
新手...能具体点最好..
谢谢各位大侠
解决方案 »
- 多行文本框 maxlength属性无效,附上我的解决方案
- c# 调用非托管DLL代码问题?
- 跪求在Windows Mobile 2003/5/6平台上的华为H3c802.1x客户端
- 求教C#带ref参数动态方法的实现[高难!]
- 100分求C#版数据结构及经验之谈
- 关于文件分段下载问题(HttpWebResponse,HttpWebResquest)
- C# 调用摄像头 黑屏
- Help,如何更改DataGrid控件选中那个单元格的背景色和前景色?
- 怎么捕捉到“剪贴版”Ctrl+C的内容,能修改吗
- C# WinForm DataGridView 表格的数据有加载,但显示不正常,鼠标移上去才有显示?
- C#滚动字幕
- 存储过程如何调用dll文件
frm1 = new frm1();
这时候你就有frm1对象。如果你要打开窗体2那么你可以直接使用frm1关闭。在关闭之前获取frm1的位置,在打开2的之后调用2的设置位置函数这样OK了
大致这样
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("User32.dll")]
private static extern bool ClientToScreen(IntPtr hwnd, ref Point lpPoint); IntPtr findPtr = FindWindow(null, "frm1"); Point p = new Point (0);
ClientToScreen(findPtr, ref p);
根据这p设置2的位置frm2.SetDesktopLocation(p.x,p.y);
FORM1:
private Point m_Point = new Point(0, 0);
private void MoveForm(Point p)
{
m_Point = p;
} private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.MoveEvent += MoveForm;
frm.Show();
frm.Top = m_Point.X;
frm.Left = m_Point.Y;
} private void button2_Click(object sender, EventArgs e)
{
Form3 frm = new Form3();
frm.MoveEvent += MoveForm;
frm.Show();
frm.Top = m_Point.X;
frm.Left = m_Point.Y;
}FORM2和FORM3是一样的
public delegate void MoveDelegate(Point p);
public event MoveDelegate MoveEvent; private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
if (MoveEvent != null)
{
MoveEvent(new Point(this.Top, this.Left));
}
}
有点迷糊了..
{
if (f1 is Form1)
{ f1.Close();/记录位置Location }
}
Form2 fm = new Form2();
fm.Show(this);
之后 new form2 时候
给form2.location.x= form1.location.x
form2.location.Y= form1.location.Y
这样就行;额