C#文本框中的独立滚动条

时间:2012-11-20 11:23:20

标签: c# winforms textbox

在我的项目中,我的文本框需要一个独立的滚动条。所以我创建了一个自定义滚动条。任何想法如何在文本框中使用我的自定义滚动条(水平和垂直)而不是内置滚动条?

请在下面找到我的示例代码。 (在原始代码中,文本框和滚动条是可换肤的。我无法在此处发布实际代码...)

public partial class EditControl : Control
{
    int BORDERWIDTH = SystemInformation.Border3DSize.Width;
    int SCROLLBARWIDTH = SystemInformation.VerticalScrollBarWidth;
    CustomTextBox editCtrl;
    VScrollBar vScrollBar = null;
    public EditControl()
    {
        InitializeComponent();
        editCtrl = new CustomTextBox();
        this.Width = 200 + SCROLLBARWIDTH;
        this.Height = 140;

        editCtrl.Width = this.Width - SCROLLBARWIDTH;
        editCtrl.Height = this.Height;
        editCtrl.Multiline = true;
        editCtrl.Left = Left;

        vScrollBar = new VScrollBar();
        vScrollBar.Height = this.Height;
        vScrollBar.Location = new Point(editCtrl.Width, 1);
        vScrollBar.Scroll += new ScrollEventHandler(vScrollBar_Scroll);
        this.Controls.Add(editCtrl);
        this.Controls.Add(vScrollBar);
    }

    private void vScrollBar_Scroll(object sender, ScrollEventArgs e)
    {
        //Code to scroll the text box
        //editCtrl.ScrollTo(position);
    }
    protected override void OnResize(EventArgs e)
    {
        base.OnResize(e);
        editCtrl.Width = this.Width - SCROLLBARWIDTH;
        editCtrl.Height = this.Height;
    }
    public partial class CustomTextBox : TextBox
    {
        public CustomTextBox()
        {
            //InitializeComponent();
        }
        public void ScrollTo(int Position)
        {
           //Code to scroll the contents.
        } 
    }
}

}

1 个答案:

答案 0 :(得分:1)

问题解决了。我已经通过自定义滚动条屏蔽了文本框的原始滚动条。 GetScrollInfo API用于同步滚动条。