我有一个带有选项卡控件的主窗体。通过添加解决方案中其他表单的面板来填充选项卡。其中一个面板包含一些代码,可以弹出一个选项窗口。我希望该窗口能够与主窗体的右上角对齐。为此,我需要主窗体的位置和大小。但是,我似乎无法访问任何属性来告诉其中一个面板该主窗体的位置是什么。
我尝试过诸如 this.Parent
、this.ParentForm
和 this.GetContainerControl()
之类的方法。它们都返回 null
。
有什么想法吗?
附录
//Code for the main form:
namespace WinAlignTest {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
tabControl1.TabPages[0].Controls.Add(new SomeApplication().panel1);
}
}
}
//Code that shows the option window
namespace WinAlignTest {
public partial class SomeApplication : Form {
private ApplicationOptions Options;
public SomeApplication() {
InitializeComponent();
Options = new ApplicationOptions();
}
private void button1_Click(object sender, EventArgs e) {
Options.Show();
//This will always move the location to {0,0}
Options.Location = new Point(base.Location.X,base.Location.Y);
}
}
}
最佳答案
我很困惑,您似乎正在向 Form1 添加一个属于 SomeApplication 的面板。我建议您实际上将 SomeApplication 设置为 UserControl 而不是表单:
//Code for the main form:
namespace WinAlignTest {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
tabControl1.TabPages[0].Controls.Add(new SomeApplication());
}
}
}
//Code that shows the option window
namespace WinAlignTest {
public partial class SomeApplication : UserControl {
private ApplicationOptions Options;
public SomeApplication() {
InitializeComponent();
Options = new ApplicationOptions();
}
private void button1_Click(object sender, EventArgs e) {
Options.Show();
// You might need to use PointToScreen here
Options.Location = this.Location;
}
}
}
关于C# 尝试访问面板父级的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6348339/