C# 尝试访问面板父级的位置

标签 c# winforms

我有一个带有选项卡控件的主窗体。通过添加解决方案中其他表单的面板来填充选项卡。其中一个面板包含一些代码,可以弹出一个选项窗口。我希望该窗口能够与主窗体的右上角对齐。为此,我需要主窗体的位置和大小。但是,我似乎无法访问任何属性来告诉其中一个面板该主窗体的位置是什么。

我尝试过诸如 this.Parentthis.ParentFormthis.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/

相关文章:

当主窗体关闭时,C# 终止所有以 Application.Run 启动的进程

c# - 当 Windows Shell 替换为 Windows Forms 应用程序时,第一次按键丢失

c# - for 循环的头部允许什么?

c# - Web 请求超时

c# - for循环中的除法增量器?

c# - 动态循环控件没有效果

c# - 通过 C# Interop 执行 VBA 宏?

c# - 从 IEnumerable<T> 中删除项目

当应用程序最小化到托盘时,C# MessageBox 显示在前面

c# - 如何将位于不同文件夹中的 C# dll 引用到使用该 dll 公开的接口(interface)的不同文件夹中的 C# winforms exe