如何编写文本框中鼠标滚动时发生的事件?

问题描述 投票:0回答:4

我想在鼠标滚动时更改文本框的数量。
我有一个滚动文本框,但我不想使用它。有与此相关的活动吗? 我应该编写一个文本框事件吗?如果是,我如何编写鼠标滚动时发生的文本框事件?

c# events textbox scroll delegates
4个回答
2
投票

MouseWheel
活动就在那里:

public Form1()
{
    InitializeComponent();
    textBox1.MouseWheel += textBox1_MouseWheel;
}

void textBox1_MouseWheel(object sender, MouseEventArgs e)
{
    throw new NotImplementedException();
}

但它在事件编辑器中不可见。不知道为什么..

您可以通过

Intellisense
找到完整的活动列表,如下所示:

输入控件的名称和一个点。现在查看您需要的事件的下拉列表。当你写下

+=
添加时,按
Tab
两次。这会连接该事件并为其创建一个存根。


0
投票

您需要 MouseWheel 事件。检查文档。


0
投票

在xaml中使用ScrollViewer.ScrollChanged事件。这是一个实现自动滚动日志文本框的示例。向上滚动停止自动滚动动作,向下滚动恢复动作

XAML代码:

<TextBox x:Name="LogTextBox" Background="Black" Foreground="LightGray" TextChanged="OnTextChanged"
        IsReadOnly="True" IsReadOnlyCaretVisible="True"
        VerticalScrollBarVisibility="Auto" ScrollViewer.ScrollChanged="OnScroll">
</TextBox>

Cs代码:

public partial class LogTextBlock : UserControl
{
    public LogTextBlock() => InitializeComponent();

    bool m_autoScroll = true;

    void OnTextChanged(object sender, TextChangedEventArgs e)
    {
        if (m_autoScroll) LogTextBox.ScrollToEnd();
    }

    void OnScroll(object sender, ScrollChangedEventArgs e)
    {
        var verticalChange = e.VerticalChange;

        if (verticalChange > 0)
            m_autoScroll = true;
        else if (verticalChange < 0)
            m_autoScroll = false;
    }

}

-1
投票

VS studio 不是

Intellisense
因为某些属性和方法是

[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Advanced)]

© www.soinside.com 2019 - 2024. All rights reserved.