我製作了Windows窗體解決方案。在主外殼中,添加了一個MenuStrip,並且可以在其上添加更多視圖。WinForms - 禁用拖動菜單欄和其他窗口
問題是,當我添加/打開一個新的視圖時,它在MenuStrip後面打開。 不知何故,我想讓MenuStrip有一個邊框,所以不可能拖拽背後的東西,但我不知道如何。
同樣的情況應該與其他視圖。
我製作了Windows窗體解決方案。在主外殼中,添加了一個MenuStrip,並且可以在其上添加更多視圖。WinForms - 禁用拖動菜單欄和其他窗口
問題是,當我添加/打開一個新的視圖時,它在MenuStrip後面打開。 不知何故,我想讓MenuStrip有一個邊框,所以不可能拖拽背後的東西,但我不知道如何。
同樣的情況應該與其他視圖。
您應該爲要添加的控件設置Dock
屬性。
好的,我有一個解決方案 - 我不完全喜歡它,但它的工作原理!您需要在標誌方面通常MDI犯罪嫌疑人等
主要形式是MDI容器需要有類似:
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
int BodyCount = 0;
private void fileToolStripMenuItem_Click(object sender, EventArgs e)
{
MDIChildForm child = new MDIChildForm();
child.TitleText = String.Format("Child window {0}", ++BodyCount);
child.MdiParent = this;
child.Show();
}
/*
** This could be fun - shouldn't recurse!
*/
public void ShifTheChild(MDIChildForm spoiltBrat)
{
var m = menuStrip1.Height;
if (spoiltBrat.Location.Y < m)
spoiltBrat.Location = new Point(spoiltBrat.Location.X, 0);
return;
}
}
子窗體需要的位置改變事件掛鉤:
public partial class MDIChildForm : Form
{
public String TitleText
{
get { return this.Text; }
set { this.Text = value; }
}
MainForm parent = null;
public MDIChildForm()
{
InitializeComponent();
this.ShowIcon = false;
}
private void MDIChildForm_LocationChanged(object sender, EventArgs e)
{
if (parent != null)
parent.ShifTheChild(this);
}
private void MDIChildForm_Load(object sender, EventArgs e)
{
parent = this.MdiParent as MainForm;
}
}
當你把一個孩子帶到它將被背出拍下了菜單下的邊緣地區 - 即移動它會導致事件再次觸發,但第二次沒有什麼應該發生的方法(所以沒有遞歸)。
我不喜歡這個解決方案,因爲我無法得知我是否有一個條件,將使它遞歸,並且我不喜歡不確定性。
祝你好運。
我試圖'menuStrip.Dock = DockStyle.Top;',但沒有幫助。拖動時,甚至可以將鼠標指針拖到MenuStrip上。 – Moelbeck
設置您要添加的控件的Dock屬性,而不是MenuStrip的Dock –
也嘗試過。不知道我做錯了什麼,因爲我認爲這是一件容易的事情 - 但我是Winforms的新手。 我和其他觀點一樣,我不希望一個人被拖到另一個前面。 – Moelbeck