c# - 阻止 "stealing"滚动事件中的多行 TextBox

标签 c# textbox scroll

我在 TabControl 中有几个多行文本框。 tabcontrol 有一个滚动条,但是一旦多行文本框获得焦点,滚动就会滚动文本框而不是 tabcontrol。有什么方法可以阻止文本框接收事件并更像普通文本框,但仍然是多行的?

最佳答案

将 TextBox.ScrollBars 属性设置为 Vertical。这为文本框提供了滚动文本的滚动条。确保 TextBox 适合 TabPage,这样您就不会在标签页中看到滚动条。例如,您可以将 TextBox.Dock 属性设置为 Fill。


我猜不是,也许您说的是鼠标滚轮。向您的项目添加一个新类并粘贴如下所示的代码。编译。将工具箱顶部的新控件拖放到窗体上,替换现有的文本框。

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;

class MyTextBox : TextBox {
    protected override void WndProc(ref Message m) {
        // Send WM_MOUSEWHEEL messages to the parent
        if (m.Msg == 0x20a) SendMessage(this.Parent.Handle, m.Msg, m.WParam, m.LParam);
        else base.WndProc(ref m);
    }
    [DllImport("user32.dll")]
    private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
}

关于c# - 阻止 "stealing"滚动事件中的多行 TextBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3124464/

相关文章:

javascript - 滚动以解决向上滚动的问题

c# - Visual C# 中用户定义的错误集合

c# - '.' 附近的语法不正确。 - C#

c# - 绑定(bind)到 2 个字符串元素?

c# - 如何在 C# 中向 winforms 程序添加功能?

vb.net - 获取固定宽度文本框的字体

c# - 在两个文本框之间检查

javascript - 如何在滚动特定的 div 时切换显示/隐藏固定元素?

c# - 从特定数字获取枚举

android - 在 Android 中很好地设置 ListView 滚动位置