2010-02-07 29 views
1

如何在用戶更改插入光標的哪一行時執行一些代碼?當前行號更改事件如果vb.net

所以像:

sub textbox1_lineindexchanged (byval ....) Handles Textbox1.Lineindexchanged 
    'do code based on the current line 
end sub 

對不起,我使用的是RichTextBox的,只是我一直用它,所以我只是把它在我的thoguhts一個文本框。

+1

你是指當用戶在多行文本框的行之間移動時發生的事件,類似的事情? – MartW 2010-02-07 20:08:53

+0

是的,確切地說。 – 2010-02-07 20:15:54

回答

0

我假設你使用Windows窗體,所以我的答案是基於此。如果您使用的是ASP.NET,那麼您需要使用JavaScript來完成,而且我不知道如何/如果可能的話。

在Windows窗體中,您可以爲KeyUp和MouseUp事件創建事件處理程序,但不存在SelectionChanged事件。如果您改用RichTextBox代替,則您可以訪問SelectionChanged事件。

如果您使用文本框的SelectionStart屬性並將其傳遞給GetLineFromCharIndex方法,該方法會給出行號。希望這可以幫助。

+0

獲得當前行,但我不會通過代碼如何脫字符剛剛左右移動。 – 2010-02-07 20:29:56

+0

那麼你想要做的是不可能的。 – Josh 2010-02-07 20:31:05

+0

當行改變時,我想要運行的代碼是一個usercontrol函數,它必須存儲文本行,所以我將檢查插入的行是否與存儲在用戶變量。如果它們是相同的,那麼插入符沒有移動線(或者如果有2個相同的線,我不需要運行代碼),如果它們不是那麼它被移動線或線被改變,我需要運行這兩種情況下的代碼。那謝謝啦!!!! – 2010-02-07 20:37:34

0

有沒有辦法做到這一點與香草WinForms TextBox實例。它不公開任何有關插入符號的信息。要做到這一點的唯一方法是分類TextBox,重寫WndProc並專門處理有關脫字符號移動的消息(如果存在此類消息)。

你想在這裏實現什麼行爲?可能有另一種方法來實現這一點。

+1

它通過textbox.SelectionStart,然後你可以檢查如果選擇長度是0.你可以通過'TextBox1.GetLineFromCharIndex(TextBox1.GetFirstCharIndexOfCurrentLine)' – 2010-02-07 20:22:26

0

我懷疑有一些東西比檢查SelectionStart財產KeyPress,ClickTextChanged處理程序更優雅。

相關問題