gpt4 book ai didi

c# - 如何取消以编程方式添加的菜单的垂直空间?

转载 作者:太空狗 更新时间:2023-10-29 23:39:57 25 4
gpt4 key购买 nike

我添加一个MenuStrip到我的表单,我想像往常一样在它下面添加其他控件 Point(0, 0) 是空白表单空间的左上角。在我将菜单添加到我的表单并添加更多控件后,它们相互重叠。所以我想去掉菜单的客户端矩形的一些高度,Location = (0,0) 的按钮必须在菜单下方RIGHT

我该怎么做?

如果我将 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);

虽然这就像我希望它与 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);

最佳答案

当您SetBounds(0, 25, 128, 50)时,您实际上是将b.Top设置为25(第二个参数).为了设置相对于 menu 控件的顶部边界,请使用:

b.SetBounds(0, menu.Bottom, 128, 50);

[更新]

或者,您可以使用:

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;
}
}

[更新 2]

或者你可以只使用一个面板:

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);

关于c# - 如何取消以编程方式添加的菜单的垂直空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15158397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com