[英]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.