【问题标题】:MouseEnter Event Handler for RichTextBoxRichTextBox 的 MouseEnter 事件处理程序
【发布时间】:2015-04-20 13:17:47
【问题描述】:

我想将 MouseEnter 事件处理程序添加到我在 tabcontrol 中的 RichTextBox 中。以下代码获取当前选中的 RichTextBox:

 private RichTextBox GetRichTextBox()
    {
        RichTextBox rtb = null;
        TabPage tp = tabControl1.SelectedTab;

        if (tp != null)
        {
            rtb = tp.Controls[0] as RichTextBox;
        }

        return rtb;
    }

接下来的代码是我使用 RichTextBox 创建新标签的代码:

TabPage tp = new TabPage("New Document");
        RichTextBox rtb = new RichTextBox();
        rtb.Dock = DockStyle.Fill;

        tp.Controls.Add(rtb);
        tabControl1.TabPages.Add(tp);

我不确定如何为创建的 RichTextBox 创建鼠标输入事件处理程序。对此的任何帮助将不胜感激。

【问题讨论】:

    标签: c# winforms event-handling mouseevent


    【解决方案1】:

    在您创建 RichTextBox 的同一位置,您可以将事件处理程序添加到您想要的任何事件。只需执行以下操作:

    RichTextBox rtb = new RichTextBox();
    // the rest of your code...
    rtb.MouseEnter += rtb_MouseEnter;
    
    void rtb_MouseEnter(object sender, EventArgs e)
    {
        // Do what ever you want here...
    }
    

    【讨论】:

    • 天哪,我觉得自己很愚蠢。我曾尝试过类似的事情,但我想我在某个地方出错了。谢谢你。这对我有用。
    【解决方案2】:

    创建鼠标侦听器,将鼠标侦听器添加到需要它们的对象。

        ....
        TabPage tp = new TabPage("New Document");
        RichTextBox rtb = new RichTextBox();
        rtb.Dock = DockStyle.Fill;
    
        //Add listener
        rtb.MouseClick += new MouseEventHandler(Control1_MouseClick);
    
        tp.Controls.Add(rtb);
        tabControl1.TabPages.Add(tp);    
        ...
    }
    
    private void Control1_MouseClick(Object sender, MouseEventArgs e) {
        //Stuff
    }
    

    Source

    【讨论】:

      【解决方案3】:

      您可以使用 RichTextBox 类的“OnMouseEnter”事件。只需在创建 RichTextBox 对象时注册该事件即可:

      TabPage tp = new TabPage("New Document");
          RichTextBox rtb = new RichTextBox();
          rtb.MouseEnter += MyHandler;
          rtb.Dock = DockStyle.Fill;
      
          tp.Controls.Add(rtb);
          tabControl1.TabPages.Add(tp);
      

      然后把你想要执行的代码放到你的事件处理器中:

      private void MyHandler(object s, EventArgs e)
      {
         // code to be executed on mouse enter
      }
      

      您还应该在适当的时候取消注册您的活动。

      【讨论】:

        【解决方案4】:

        在将事件处理程序添加到 RichTextBox 之前,将其添加到选项卡控件

        rtb.MouseEnter += new EventHandler(TabControlMouseEnterEvent);
        

        然后创建事件处理程序

            private void TabControlMouseEnterEvent(object sender, EventArgs e)
            {
                RichTextBox rt = (RichTextBox)sender;
                // do something with selected Rich Text Box
        
            }
        

        希望这会有所帮助。

        【讨论】:

          猜你喜欢
          • 2014-03-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-01-25
          • 2013-12-24
          • 1970-01-01
          相关资源
          最近更新 更多