Bit*_*lue 5 c# layout winforms
我在我的表单中添加了一个MenuStrip,我想在它下面添加其他控件,就像通常的Point(0,0)是空表单空间的左上角一样.将菜单添加到表单并添加更多控件后,它们相互重叠.因此,我想取消菜单中客户端矩形的一些高度,并且菜单下方的按钮Location = (0,0)必须正确.
我怎么做 ?
如果我将一个MainMenu分配给表单的Menu属性,它会自动执行,但我真的想要并需要使用MenuStrip.
MenuStrip menu = new MenuStrip();
menu.Items.Add("File");
menu.AutoSize = false;
menu.Height = 50;
menu.Dock = DockStyle.Top;
MainMenuStrip = menu;
Controls.Add(menu);
Button b = new Button();
b.Text = "hello world";
b.SetBounds(0, 25, 128, 50);
Controls.Add(b);
Run Code Online (Sandbox Code Playgroud)
虽然这与我想用MenuStrip一样有效:
Menu = new MainMenu();
Menu.MenuItems.Add("File");
Button b = new Button();
b.Text = "hello world";
b.SetBounds(0, 0, 128, 50);
Controls.Add(b);
Run Code Online (Sandbox Code Playgroud)
当您 时SetBounds(0, 25, 128, 50),您实际上正在设置b.Top(25第二个参数)。为了设置相对于menu控件的顶部边界,请使用:
b.SetBounds(0, menu.Bottom, 128, 50);
Run Code Online (Sandbox Code Playgroud)
[更新]
或者,您可以使用:
public partial class Form1 : Form
{
private int menuStripHeight = 50;
public Form1()
{
InitializeComponent();
this.ControlAdded += Form1_ControlAdded;
}
private void Form1_Load(object sender, EventArgs e)
{
MenuStrip menu = new MenuStrip();
menu.Items.Add("File");
menu.AutoSize = false;
menu.Height = menuStripHeight; ;
menu.Dock = DockStyle.Top;
MainMenuStrip = menu;
Controls.Add(menu);
Button b = new Button();
b.Text = "hello world";
// note that the position used is 0,0
b.SetBounds(0, 0, 128, 50);
Controls.Add(b);
}
void Form1_ControlAdded(object sender, ControlEventArgs e)
{
if (e.Control.GetType().FullName != "System.Windows.Forms.MenuStrip")
e.Control.Top += menuStripHeight;
}
}
Run Code Online (Sandbox Code Playgroud)
[更新2]
或者你可以只使用Panel:
MenuStrip menu = new MenuStrip();
menu.Items.Add("File");
menu.AutoSize = false;
menu.Height = menuStripHeight; ;
menu.Dock = DockStyle.Top;
MainMenuStrip = menu;
Controls.Add(menu);
Panel p = new Panel();
p.SetBounds(0, menuStripHeight, this.Width, this.Height);
Controls.Add(p);
Button b = new Button();
b.Text = "hello world";
p.Controls.Add(b);
b.SetBounds(0, 0, 128, 50);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
506 次 |
| 最近记录: |