2015-09-10 35 views
0

我想我在.NET中遇到過一個錯誤,但我想知道這是不是我做錯了。勝利表格:RichText Box - > AutoWordSelection/Hide選擇錯誤

首先,我在Win Forms中創建簡單的文本編輯器。我添加了查找所需文本的功能。它作爲我創建的無模式對話框工作。我希望它能像這樣工作:如果找到搜索到的單詞,它會選擇RTB中的文本,將焦點放在它上面,然後將焦點返回到我的無模式窗口。與啓用隱藏選擇屬性相結合,它完美地工作,完全按照我想要的那樣工作(搜索後焦點仍在無模式窗口上,但發現的短語在RTB中保持高亮顯示)。

後來,我發現AutoWordSelection屬性有問題,它只是不起作用。所以我已經說了here。事實上,它有幫助,但後來我注意到我的搜索算法不起作用(現在我需要在搜索後將焦點放在RTB上,而不是將其返回到無模式窗口)。換句話說,它只是停止工作。

我試圖在我的FixedRichTextBox添加一些代碼(我只是說它由Hans建議的第一部分下):

if(base.HideSelection) 
    base.HideSelection=false; 
base.HideSelection=false; 

我也嘗試過其他的方式,我的意思是:'如果(! [...]

在這兩種情況下,我都收到關於不可能創建窗口句柄的消息。因此,我必須同意只能使用AutoWordSelection或HideSelection正常工作(因爲上面的部分正在工作,如果我刪除早期部分涵蓋AutoWordSelection)。

這不是一個非常嚴重的問題,因爲我找到了一種方法使它只是一點點不像我想要的那樣(但它不限制應用程序的功能)。然而,這個錯誤(如果它是一個錯誤)令人討厭,我想知道是否有人經歷過這種情況並找到了合適的解決方案。

比方說@Hans Passant:D

回答

0

好吧。因此,我似乎找到了答案(這是我在此發佈的顯而易見的原因)。在這種情況下,需要完全按照我在問題中鏈接的文章進行操作,然後將HideSelection設置爲true(在mainForm.cs中),並在public ctor中將其設置爲false。很愚蠢,但它現在可以工作(並且如果默認情況下將其設置爲false,則不會)。