c#创建子窗口时,子窗口无法获得焦点,总出现在父窗口控件的后面……

调用子窗口代码:
namespace experiment
{
public partial class Form1 : Form
{
public Form1()
{
this.IsMdiContainer = true;
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{

Form2 frm = new Form2();
frm.MdiParent = this;
frm.Show();
frm.Focus();
}
}
}

在private void InitializeComponent()中加入
this.LostFocus+=new EventHandler(Form1_LostFocus);

然后写Form1_LostFocus方法:

private void Form1_LostFocus(object sender, EventArgs e)
{
this.Close();
}

以下是全部代码(2003中):
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace WindowsApplication1
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;

public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();

//
// TODO: Add any constructor code after InitializeComponent call
//
}

/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.Size = new System.Drawing.Size(300,300);
this.Text = "Form1";
this.LostFocus+=new EventHandler(Form1_LostFocus);
}
#endregion

/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}

private void Form1_LostFocus(object sender, EventArgs e)
{
this.Close();
}
}
}
追问

按照前面说的改过之后,子窗口仍然在父窗口后面,而且一闪就关闭了……

温馨提示:内容为网友见解,仅供参考
无其他回答

c#创建子窗口时,子窗口无法获得焦点,总出现在父窗口控件的后面……
在private void InitializeComponent()中加入 this.LostFocus+=new EventHandler(Form1_LostFocus);然后写Form1_LostFocus方法:private void Form1_LostFocus(object sender, EventArgs e){ this.Close();} 以下是全部代码(2003中):using System;using System.Drawing;using System.Collections;using System.C...

请教c# 弹出窗口跑到了父窗口背后去了怎么回事?不知道要设置什么属性...
用带参数的Show或ShowDialog方法试试,参数是父窗口的引用

C#里面,子窗口关闭以后,刷新一个父窗口的控件的属性,怎么办
注册子窗口的FormClosed事件。处理就可以了。private Form childForm;public ParentForm(){ childForm.FormClosed+=new FormClosedEventHandler(childForm_FormClosed);} protect void childForm_FormClosed(object sender,FormClosedEventArgs e){ \/\/这里刷新状态信息。。} ...

c#把现打开的子窗口标题加入到父窗口菜单栏问题!
private void 打开窗口ToolStripMenuItem_Click(object sender, EventArgs e){ Form2 F = new Form2(this);F.MdiParent = this;\/\/创建窗体标题同名菜单 ToolStripMenuItem mi = new ToolStripMenuItem( F.Text);\/\/快捷关闭窗口字菜单 ToolStripMenuItem close = new ToolStripMenuItem("关闭");...

C#子窗口没有显示背景图片,,,在FORM里设置了,还是一片空白
出现这种问题:1:图片路径不对。最好把图片拖动出来。2:层次问题,显示的图片呗覆盖了。

编程语言c# 父窗口上面的控件 比如说 groupBox1,把新NEW出来的子窗口给...
解决方法1,这个用api setparent实现,不要用mdiparent 解决方法2,在显示子窗体时候吧父窗体的控件隐藏 解决方法3,将父窗体的控件都放在一个容器里面(如:panel)然后将panel的dock设置靠边(left)那么mdi子窗体出来的时候就是和这些控件并排的,不会谁覆盖谁了 ...

C#中如何先弹出子窗体,父窗体隐藏,而后,单击子窗体的按钮,子窗体关闭...
如果是登录窗口,一般的做法是更改program.cs,先显示登录窗口,通过后再显示主窗体,假定你的登录窗体叫Login,主窗体叫MainForm static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Login login = new Login(); login.ShowDialog(...

C#做网站,网页中父窗口弹出子窗口问题
showModalDialog('...','','');的后面,加上一句:location.href=location.href;就可以啦~~

C#中如何处理父窗口及其子窗口标题
如果用纯 C 代码编写 那么必须自己负责用 DefFrameProc 和 DefMDIChildProc 创建窗口 在 MFC 中则使用 CMDIFrameWnd\/CMDIChildWnd NET 框架平台里则设置 Form IsMdiContainer 和 Form MdiParent 不管用哪种方式 其核心都是 user kernel 尤其是 DefFrameProc 当 MDI 子窗口最大化时 它会联接父子窗口的...

c# MDI子窗口如何在父窗口中置顶???求解
你置顶的意思是多个mdi窗口,希望某一个放在父窗体的第一个(最上方)吗?在mdi窗体的属性中,有一个枚举属性 mdilayout ,可以指定窗体的排序方式 是横排还是纵排,然后在向父窗体添加子窗体的时候,将希望置顶mdi窗体第一个加入,就可以实现某一个mdi窗体在父窗体的最上方了。

相似回答
大家正在搜