2015-02-11 62 views
1

我知道GroupBox几乎就像是一个Panel,它带有标题和边框,但不可滚动。查找GroupBox内部区域的左上角原点

所以在GroupBox有我所说的“内部区域”,我们希望显示内部元素。

但似乎GroupBox没有放置在这个区域的元素,但直接在它的左上角,就像一个哑面板。

这里是 “问题” 的一个简单的例子:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 

     Button button = new Button { Text = "Hello!!!" }; 

     GroupBox groupBox = new GroupBox { Text = "Some useful stuff", Dock = DockStyle.Fill }; 
     groupBox.Controls.Add(button); 

     this.Controls.Add(groupBox); 
    } 
} 

其中给出这个丑陋的结果:

GroupBox with Button inside

我可以与ButtonLocation属性添加一个玩抵消,但这不是100%令人满意。

将元素“放置在内部区域”的最简洁方法是什么?

有没有办法知道边界和标题的大小,以便使用正确的偏移?

回答

2

尝试使用分组框的DisplayRectangle属性为:

Button button = new Button { Text = "Hello!!!" }; 
button.Location = groupBox.DisplayRectangle.Location; 
groupBox.Controls.Add(button); 
+0

感谢您的快速和准确的答案。似乎要完成这项工作。 :)这是一个遗憾,它没有正确记录,你甚至不鼓励使用它,因为“这个API支持.NET Framework基础结构,并不打算直接从你的代码中使用。” – Pragmateek 2015-02-11 00:22:48