我想实现360的界面,窗体设置为无边界,点击一个图标打开一个功能窗口。1.刚开始实现多界面功能是用按钮点击事件中编写如下代码实现的
FrmLogin frmLogin = new FrmLogin(); //设置为全局变量
private void button5_Click(object sender, EventArgs e)
{
frmLogin.TopLevel = false; ;
panel1.Controls.Add(frmLogin);
frmLogin.Dock = DockStyle.Fill;
frmLogin.Show();
orderManage.Hide();
}[code=C#][/code]
后来发现如果我要实现的功能多的话,每次加一个窗体,就要在代码中加该窗体的隐藏代码frm.Hide();有点太麻烦,如果有别的方法实现该块的功能,不胜感激。在这个方法中无边界实现窗体拖动没有问题,以下是代码 //控制窗体移动
[DllImport("user32.dll")]
public static extern bool ReleaseCapture(); [DllImport("user32.dll")]
public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
private void MainForm_MouseDown(object sender, MouseEventArgs e)
{
ReleaseCapture();
SendMessage(this.Handle, 0x0112, 0xF012, 0);
}后来使用MDI父窗体和子窗体的办法,将MainForm 窗体的属性IdMdiContainer=true;无边界窗体拖动就不好使了,请问是什么原因,有没有解决办法。2.用MDI实现多界面功能和第一种方法相比,除了代码量减少之外,有哪些优势,就性能来说,还有就是打开窗体载入控件的时候,两种方法哪个好点,我担心会造成控件延迟,会不好看,有没有好的办法,谢谢。
FrmLogin frmLogin = new FrmLogin(); //设置为全局变量
private void button5_Click(object sender, EventArgs e)
{
frmLogin.TopLevel = false; ;
panel1.Controls.Add(frmLogin);
frmLogin.Dock = DockStyle.Fill;
frmLogin.Show();
orderManage.Hide();
}[code=C#][/code]
后来发现如果我要实现的功能多的话,每次加一个窗体,就要在代码中加该窗体的隐藏代码frm.Hide();有点太麻烦,如果有别的方法实现该块的功能,不胜感激。在这个方法中无边界实现窗体拖动没有问题,以下是代码 //控制窗体移动
[DllImport("user32.dll")]
public static extern bool ReleaseCapture(); [DllImport("user32.dll")]
public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
private void MainForm_MouseDown(object sender, MouseEventArgs e)
{
ReleaseCapture();
SendMessage(this.Handle, 0x0112, 0xF012, 0);
}后来使用MDI父窗体和子窗体的办法,将MainForm 窗体的属性IdMdiContainer=true;无边界窗体拖动就不好使了,请问是什么原因,有没有解决办法。2.用MDI实现多界面功能和第一种方法相比,除了代码量减少之外,有哪些优势,就性能来说,还有就是打开窗体载入控件的时候,两种方法哪个好点,我担心会造成控件延迟,会不好看,有没有好的办法,谢谢。
解决方案 »
- backgroundworker与Timer联合使用问题
- 类定义中定义自己的一个对象,居然程序成功运行
- 如何判断一个EXE程序是不是用C#写的?
- 一个dataGridView.DataSource 已经获取了数据源后 改变某列的columnType 怎么做呢?
- 关于databind 与 gridview一直没注意到的问题(分用完了,谢谢帮忙)
- 请问控件焦点是什么意思
- 百分求解:Arraylist(其成员为int[])属性序列化的问题(在线急等)
- 200分求 如何在WinFrom中实现 DataGrid 控件列宽的自动适应调整(平时是等长的)
- 谈.net的尴尬
- 当向POP3服务器发送Username和Password后如何判断连接是否成功?
- C# 数据存取
- groupbox遮挡住控件
{
Form.TopLevel = false; ;
panel1.Controls.Add(Form);
Form.Dock = DockStyle.Fill;
Form.Show();
orderManage.Hide();
}private void button1_Click(object sender, EventArgs e)
{
ShowForm(frmLogin);
}
private void button2_Click(object sender, EventArgs e)
{
ShowForm(frmLogin);
}
这个确实解决了代码量,但是我每次点击的时候怎么隐藏其他窗体,隐藏其他窗体只能写在click事件中吧,
这个有没有办法,难道有几个窗体就写几行代码?第二问题,在MDI中,父窗体的mouse_down事件为什么不发生,如果这样,我就无法拖动窗体了,有没有好的方法。