簡體   English   中英

如何避免使用鼠標滾輪后 RichTextBox ScrollBar 自動滾動到最后選擇的 position?

[英]How to avoid RichTextBox ScrollBar auto scroll to last selected position after use mouse wheel?

我在Winform中使用RichTextBox控件。

最近發現一個Bug之類的怪東西,實在是找不到辦法修復。

1.我在Form中有一個RichTextBox

2.我點擊並選擇了RichTextBox中的某個地方。

3.我點擊了桌面上的任何其他地方(只是為了Deactivate Form )。 [重要的]

4.然后我用鼠標滾輪把RichTextBox的滾動條移動到某個地方(但是Form還是處於Deactivate狀態)。

5.現在我用鼠標滾輪滾動后點擊RichTextBox 但是你會發現當前的滾動條position變到老地方了。

這是顯示詳細信息的 gif 圖像:

在此處輸入圖像描述

我真的希望新的點擊位置會被選中,並且滾動條不會更改為舊的選擇 position。

有沒有人知道為什么會這樣? 有沒有什么辦法解決這一問題? 謝謝。

更新:

我想可能是因為RichTextBox里面的cursor ,如果我們把它去掉,下次點擊的時候可能就不會 go 變回原來的 cursor position ,請問有什么辦法嗎? 就像每次RichTextBox失去焦點時刪除 cursor 一樣。

另一種可能的方法是:每次移動滾動條或使用鼠標滾輪時,將當前 cursor position 設置為當前滾動條 position

更新2

我上傳了項目文件並錄制了視頻: https://drive.google.com/file/d/1rY_5mxKR6zOPqHBIOVaARee14-Ietise/view?usp=sharing

你可以下載看看。(我稍后會刪除它。)

Version Windows 10 Professional
VersionNo   22H2
NT version  19045.2251

我也試過你試過的東西,但沒有你描述的觀察結果。

但在那之后,我為表單Activated事件上的文本框調用了ScrollToCaret()方法。 然后只生成相同的場景。

我試過的代碼

namespace Text_Extration
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Activated(object sender, EventArgs e)
        {
            txtExtracted.ScrollToCaret();
        }
    }
}

我希望這會對你有所幫助。

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM