我有一個很奇怪但可複製的問題。父窗體在點擊子窗體的菜單條時點擊前
我有一個MenuStrip
它可以用Form.Show()
方法打開一個新的無模式窗體。
子窗體也有菜單條。
當您通過單擊子窗體的菜單條開始時會發生奇怪的事情。然後,父母形式回到前臺並打招呼。這是一個真正的痛苦。
如何防止此問題?
一個史科瑟思電影通過以下鏈接zippyshare.com(3MO)
正如你可以看到在視頻,父窗體並不需要重點說明我的問題,它只是通過其他somehing前bringed。
請注意,將MenuStrip
修復ToolStrip
可以解決問題。
一些代碼來重現問題:
public class DemoLostfocus : Form
{
private void InitializeComponent()
{
this.menuStrip1 = new MenuStrip();
this.fileToolStripMenuItem = new ToolStripMenuItem();
this.openModelessFormToolStripMenuItem = new ToolStripMenuItem();
this.menuStrip1.SuspendLayout();
this.SuspendLayout();
this.menuStrip1.Items.AddRange(new ToolStripItem[] {
this.fileToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(284, 24);
this.menuStrip1.TabIndex = 0;
this.menuStrip1.Text = "menuStrip1";
this.fileToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] {
this.openModelessFormToolStripMenuItem});
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
this.fileToolStripMenuItem.Text = "File";
this.openModelessFormToolStripMenuItem.Name = "openModelessFormToolStripMenuItem";
this.openModelessFormToolStripMenuItem.Size = new System.Drawing.Size(187, 22);
this.openModelessFormToolStripMenuItem.Text = "Open Modeless Form";
this.openModelessFormToolStripMenuItem.Click += new System.EventHandler(this.openModelessFormToolStripMenuItem_Click);
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(284, 262);
this.Controls.Add(this.menuStrip1);
this.MainMenuStrip = this.menuStrip1;
this.Name = "DemoLostfocus";
this.Text = "DemoLostfocus";
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
private MenuStrip menuStrip1;
private ToolStripMenuItem fileToolStripMenuItem;
private ToolStripMenuItem openModelessFormToolStripMenuItem;
public DemoLostfocus()
{
InitializeComponent();
}
private void openModelessFormToolStripMenuItem_Click(object sender, EventArgs e)
{
(new DemoLostfocus()).Show();
}
}
看起來你的表單正在產生一個新的自己的實例。這可能會導致很多問題。更好地產生別的東西的實例。 –
我不明白這可以做什麼樣的問題。你有一個例子嗎? –
不,我沒有一個例子。如果我這樣做了,我會寫一個答案,而不是一個評論。但是,您有兩個名稱相同的無主表單,其中包含相同名稱的控件。在懷疑其他事情之前,我會懷疑這是問題所在。 –