我想在鼠标滚动时更改文本框的数量。
我有一个滚动文本框,但我不想使用它。有与此相关的活动吗?
我应该编写一个文本框事件吗?如果是,我如何编写鼠标滚动时发生的文本框事件?
MouseWheel
活动就在那里:
public Form1()
{
InitializeComponent();
textBox1.MouseWheel += textBox1_MouseWheel;
}
void textBox1_MouseWheel(object sender, MouseEventArgs e)
{
throw new NotImplementedException();
}
但它在事件编辑器中不可见。不知道为什么..
您可以通过
Intellisense
找到完整的活动列表,如下所示:
输入控件的名称和一个点。现在查看您需要的事件的下拉列表。当你写下
+=
添加时,按 Tab
两次。这会连接该事件并为其创建一个存根。
您需要 MouseWheel 事件。检查文档。
在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;
}
}
VS studio 不是
Intellisense
因为某些属性和方法是
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Advanced)]