gpt4 book ai didi

c# - 检测用户是否正在滚动 dataGridView 滚动条

转载 作者:太空狗 更新时间:2023-10-30 00:51:34 24 4
gpt4 key购买 nike

我正在使用新的 DataTable 更新 dataGridView

dataGridView1.DataSource = table

但是,我不想在用户滚动 dataGridView 时执行此操作。如何检查滚动条是否正在滚动或完成滚动(即拖动而不是单击)?

我看过 Scroll 事件,但它似乎只在第一次单击滚动条但未完成时触发。谷歌搜索似乎也没有提供太多具体信息。

最佳答案

我过去通过对 DataGridView 类进行子类化并使用它代替 DataGridView 来完成此操作。

public class DataGridViewEx : DataGridView
{
public bool IsUserScrolling { get; private set; }

private const int WM_HSCROLL = 0x0114;
private const int WM_VSCROLL = 0x0115;
private const int SB_ENDSCROLL = 8;

public event EventHandler UserScrollComplete;

protected virtual void OnUserScrollComplete()
{
EventHandler handler = UserScrollComplete;
if (handler != null) handler(this, EventArgs.Empty);
}

protected override void WndProc(ref Message m)
{
// http://msdn.microsoft.com/en-us/library/windows/desktop/bb787575(v=vs.85).aspx
// http://msdn.microsoft.com/en-us/library/windows/desktop/bb787577(v=vs.85).aspx
if ((m.Msg == WM_HSCROLL) ||
(m.Msg == WM_VSCROLL))
{

short loword = (short)(m.WParam.ToInt32() & 0xFFFF);

if (loword == SB_ENDSCROLL)
{
IsUserScrolling = false;

OnUserScrollComplete();
}
else
{
IsUserScrolling = true;
}
}
base.WndProc(ref m);
}
}

关于c# - 检测用户是否正在滚动 dataGridView 滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26386945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com