【问题标题】:Removing Windows' ugly Selection marker thing from Splitter in SpitContainer Control从 SpitContainer Control 中的 Splitter 中删除 Windows 丑陋的选择标记
【发布时间】:2011-08-25 16:31:33
【问题描述】:

我有一个SplitContainer控件,中间的Splitter很丑。通过将SplitContainerBackColor 设置为(在此处插入颜色),然后将Panel1Panel2BackColor 设置为白色,我可以让我的分离器看起来不错。但默认情况下,Windows 会在拆分器上放置选择标记,甚至在它被选中之前。

如何确保选择标记永远不会显示在Splitter 上?

【问题讨论】:

  • 您希望您的分离器看起来如何?如果隐藏它的外观,用户如何知道它是一个拆分器?

标签: c# .net winforms controls splitcontainer


【解决方案1】:

我认为“选择标记废话”是指表示控件已选中的模糊线。如果您不希望显示此内容,请设置其他一些控件以在启动时选择。比如:

Textbox1.Selected = true;

如果只是其中一个未被选中,这应该可以解决您的问题。但是,如果您选择要调整大小的项目,这会回来。在这种情况下,您可以在 mouse_up 事件中放置一些东西以将选择移出控件。这样,用户移动分隔条,然后当他们松开时,选择就会从分隔条中清除。

另一种方法是使分隔条足够窄,以使灰色模糊线不显示。为此,您可以执行以下操作(经过测试):

splitContainer1.BorderStyle = BorderStyle.FixedSingle;
splitContainer1.SplitterWidth = 1;

【讨论】:

  • 但我根本不希望这样。因为(显然)当用户使用拆分器调整面板大小时,它会再次出现。但我不想那样。有没有办法改变这种行为?
【解决方案2】:

我遇到了同样的问题,并通过在 SplitContainer1 的“属性”窗口中将 TabStop 设置为 False 来修复它。

这可能会惹恼那些依赖或坚持使用键盘来操作表单的每个方面的人,但除此之外它会起作用。 SplitContainer 内的控件将保持可选项卡状态,而不是 SplitContainer 本身。

【讨论】:

    【解决方案3】:

    此代码将在移动后不久将焦点从 splitContainer 移动到 TreeView。

    private void splitContainer1_SplitterMoved(object sender, SplitterEventArgs e) {
      if(this.splitContainer1.CanFocus) {
         this.splitContainer1.ActiveControl = this.treeView1;
      }
    }
    

    【讨论】:

      【解决方案4】:

      您可以添加一个事件处理程序来从 MouseUp 的容器中窃取焦点...这有点乱,但它可以工作。 :)

      【讨论】:

        【解决方案5】:

        我尝试了很多来删除拆分器,但没有任何效果。我做了一些不同的为什么我们需要使用拆分器,因为我们可以使用图片框控件使其宽度(或)高度取决于您的项目集 5 或 3 .... 在图片框鼠标移动事件之后编写代码... picturebox property-cursor 改变光标类型 Hsplit 它看起来像 splitter

        private void picturebox1_MouseMove(object sender, MouseEventArgs e)
                {
        
         if (e.Button == MouseButtons.Left)//this for mouse left click its work
                    {
        //write you code here if you use panel set panel height or width it reaches...
        
        Cursor.Position = new Point(e.X, e.Y); // this for mouse cursor position according your //project  do some fine tune you will get its work... 
        }
        

        它的工作,因为我为此尝试了很多,我自己找到了这个方法......

        【讨论】:

          【解决方案6】:

          我将 TabStop 设置为 false,然后它就消失了。

          【讨论】:

            【解决方案7】:

            我找到/制作的最简单的解决方案 - 创建一个按钮,选择它,然后隐藏它。 全部通过代码。没有副作用或问题,将其放在表单加载事件中。

            Button DeSelectButton = new Button();
                    this.Controls.Add(DeSelectButton);
                    DeSelectButton.Select();
                    DeSelectButton.Visible = false;
            

            【讨论】:

              猜你喜欢
              • 2021-03-27
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-08-12
              • 2018-06-11
              • 2022-01-19
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多