【问题标题】:Detect SplitContainer's select Panel检测 SplitContainer 的选择面板
【发布时间】:2018-06-28 10:23:46
【问题描述】:

我有一个名为 Form1 的 Windows 窗体,在里面我有一个名为 splitcontainer 的动态 SplitContainer

我想知道在运行时单击鼠标时选择了哪个面板。
我尝试在 splitContainer 属性中使用mouseclick 事件,但没有成功。

【问题讨论】:

  • 当你说“当鼠标被点击时”..你的意思是当你点击选择一个面板的时候?
  • 是的,我的兄弟 Wheels73,当我点击选择面板时
  • 好的 - 看看我的回答。我认为它是你需要的。谢谢
  • 谢谢,但我是动态创建拆分器

标签: c# winforms


【解决方案1】:

您需要绑定到拆分容器内面板的 MouseClick 事件。

我添加了一个名为“splitContainer1”的容器,其中包含 2 个面板,Panel1 和 2

我连接了以下事件,它似乎有效

        private void splitContainer1_Panel1_MouseClick(object sender, MouseEventArgs e)
        {
            MessageBox.Show("Panel1");
        }

        private void splitContainer1_Panel2_MouseClick(object sender, MouseEventArgs e)
        {
            MessageBox.Show("Panel2");
        }

在您进一步的 cmets 之后,我编辑了以下内容,以展示如何手动绑定动态添加容器的 2 个面板的鼠标单击事件。

private void splitContainerHorizontalToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SplitContainer spltcnt = new SplitContainer();
            spltcnt.Dock = DockStyle.Left;
            spltcnt.Orientation = Orientation.Horizontal;
            spltcnt.SplitterWidth = 4;
            spltcnt.Visible = true;
            spltcnt.Size = new System.Drawing.Size(731, 615);
            spltcnt.BorderStyle = BorderStyle.Fixed3D;
            spltcnt.SplitterDistance = 351;

            //Manually bind the mouse click events.
            spltcnt.Panel1.MouseClick += Panel1OnMouseClick;
            spltcnt.Panel2.MouseClick += Panel2OnMouseClick;

            Controls.Add(spltcnt);
        }

        private void Panel1OnMouseClick(object sender, MouseEventArgs mouseEventArgs)
        {
            MessageBox.Show("Panel1");
        }

        private void Panel2OnMouseClick(object sender, MouseEventArgs mouseEventArgs)
        {
            MessageBox.Show("Panel2");
        }

您当然可以随意调用鼠标单击处理程序方法。

谢谢

【讨论】:

  • private void splitContainerHorizo​​ntalToolStripMenuItem_Click(object sender, EventArgs e) { SplitContainer spltcnt = new SplitContainer(); spltcnt.Dock = DockStyle.Left; spltcnt.Orientation = 方向.水平; spltcnt.SplitterWidth = 4; spltcnt.Visible = true; spltcnt.Size = new System.Drawing.Size(731, 615); spltcnt.BorderStyle = BorderStyle.Fixed3D; spltcnt.SplitterDistance = 351; Controls.Add(spltcnt); }
  • 这是个好消息。不要忘记选择作为答案并投票!干杯
  • 我想在一个面板中做垂直或水平分割器
  • @BirameBa - 只需将容器上的 Orientation 属性更改为水平或垂直即可。
  • 我说在创建第一个拆分器后我想在第一个面板中创建第二个拆分器
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 2011-01-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多