2010-06-26 40 views
2

我有一些TabControl中的多行文本框。该tabcontrol有一个滚动条,但只要多行文本框焦点滚动将滚动文本框而不是tabcontrol。有没有办法阻止文本框采取事件,更像一个普通的文本框,但仍然是多行?防止多行文本框“偷”滚动事件

回答

1

将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); 
} 
+0

也许我还不够清楚。 tabcontrol有一个滚动条,它应该是这样的。该文本框没有一个,它是否有一个并不重要。当(多行)文本框被聚焦时,任何鼠标滚动都将影响该文本框中的滚动而不是tab控件。即使文本框是关注的,我也希望滚动发生在tabcontrol中。基本上绑定文本框滚动事件来滚动tabcontrol,但我找不到任何类似于文本框中的滚动事件。 – Daniel 2010-06-26 16:25:22

+0

嗯,不开玩笑。可以肯定的是:你在谈论鼠标滚轮? – 2010-06-26 16:52:04

+0

对不好的问题定义。是的,我正在谈论鼠标滚轮。此外,我正在谈论WinForms(WPF,ASP和类似的存在下滑时发布))。 谢谢,它的工作!获得VS 2008将其加载到工具箱中的工作并不尽如人意,因此我以编程方式添加了它。 – Daniel 2010-06-26 18:10:05