gpt4 book ai didi

wpf - 如何防止 WPF 编辑框滚动以程序化 SelectAll 结束?

转载 作者:行者123 更新时间:2023-12-04 06:50:31 25 4
gpt4 key购买 nike

我有一个 TextBox,它在获得焦点时执行 SelectAll()。效果很好。问题是,如果内容不适合框,则 SelectAll 会导致内容滚动到最后。我希望它滚动到前面 - 此框与数字字段一起使用。

我的问题是:是否可以 SelectAll() 但避免滚动?

我现在的解决方法是排队一个 ScrollToHome。我不太喜欢这个,因为它有时会导致弹出,因为文本呈现在一个位置然后另一个位置。

    public new void SelectAll()
{
base.SelectAll();

// changing selection does something with a queued scroll request, so have to queue ours in the back. this still may cause a flash
// if a render slips through. would like to find a better way to do this.
Dispatcher.BeginInvoke(DispatcherPriority.Background, ScrollToHome);
}

请注意,ScrollToHome 必须像这样排队,否则它会由于其他一些排队事件而被“覆盖”。我猜是文本框系统内部的通知更改事件。我在源代码中四处寻找,它非常复杂,无法弄清楚它正在执行滚动请求的确切位置。

所以我正在寻找的是以下之一:
  • 如何 SelectAll() 不发生任何滚动或滚动到前面。
  • 如何强制更新显示,以便我不会弹出。
  • 最佳答案

    包裹您的 SelectAll()并与 ScrollToHome()调用 BeginChange()EndChange() .这将使其免于重绘:

    public new void SelectAll()
    {
    BeginChange();
    SelectAll();
    ScrollToHome();
    EndChange();
    }

    另一种选择是将注意力从您的 TextBox 上移开。 ,然后进行选择。

    关于wpf - 如何防止 WPF 编辑框滚动以程序化 SelectAll 结束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3188443/

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