c# - 如何通过鼠标单击找出拆分容器中的哪个面板被单击?

标签 c# winforms layout

我在我的应用程序中使用拆分容器。一个父分体容器。父拆分容器的 panel2 中有 3 个拆分容器。

现在,当我单击嵌入在父容器的 panel2 中的拆分容器的面板之一时,如何查找哪个容器哪个面板被单击?

提前致谢!

最佳答案

您可以尝试订阅所有面板以使用相同的点击事件。发送者将是 SplitterPanel 类,该类将具有一个 Parent 属性(在 IDE 中隐藏,但它在那里),该属性将是 SplitContainer:

public Form1() {
  InitializeComponent();

  splitContainer1.Panel1.MouseClick += Panel_MouseClick;
  splitContainer1.Panel2.MouseClick += Panel_MouseClick;
  splitContainer2.Panel1.MouseClick += Panel_MouseClick;
  splitContainer2.Panel2.MouseClick += Panel_MouseClick;
  splitContainer3.Panel1.MouseClick += Panel_MouseClick;
  splitContainer3.Panel2.MouseClick += Panel_MouseClick;
  splitContainer4.Panel1.MouseClick += Panel_MouseClick;
  splitContainer4.Panel2.MouseClick += Panel_MouseClick;
}

void Panel_MouseClick(object sender, MouseEventArgs e) {
  SplitterPanel sp = sender as SplitterPanel;
  SplitContainer sc = sp.Parent as SplitContainer;
  MessageBox.Show(sc.Name + " - " + sp.Tag.ToString());
}

为了演示目的,我在每个面板的标签属性中输入了 1 或 2,因为 SplitContainer 中使用的子面板不使用 Name 属性。

关于c# - 如何通过鼠标单击找出拆分容器中的哪个面板被单击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12200167/

相关文章:

c# - 在 C# 中转换为泛型类型

c# - 在现有工作簿中存储 Excel 加载项

c# winform绘制闪烁图像

java - 布局内布局

c# - LINQ 列表属性到数组?

c# - 如何检查目录是否是 C# 中的 git 存储库

c# - c# d1p1 和 xmlns 中的 XML 序列化

c# - 无法在 C# 中的按钮文本中显示 "&&"

java - 通过CUSTOM listview显示SQLite信息

html - 主页宽度 100% 宽度和其他(输入表单)窄宽度的 Rails 布局