2008-10-06 80 views
0

我正在寫一個.NET窗體控件來使用MSHTML編輯HTML。我正在創建一些自定義元素,並希望使其有效地爲只讀。我認爲我可以通過關注整個元素來解決這個問題,無論何時何地在該元素的任何位置輸入焦點,但HtmlElement.Focus()不會選擇整個元素,並且我似乎無法捕獲到光標的輸入。使DOM元素有效地只讀

另一種選擇是在元素的文本發生變化時(在我期望的KeyDown上)引發一個事件,但我無法觸發該事件。任何關於爲什麼我對事件行爲的期望是錯誤的想法或替代實施建議?

回答

1

我發現,設置屬性:

contentEditable=false 

在期望的行爲造成的。

0

如果您嘗試將只讀行爲應用於用戶輸入控件,可以嘗試使用該控件的@readonly屬性。否則,您還可以爲適當的UI事件(keydown,mousedown)添加事件偵聽器並防止其默認行爲(返回false或event.returnValue = false)。至於自定義事件調度,你確實可以做到這一點。使用IE已知的事件名稱。另一個提示可能是:註冊一個onchange事件處理程序,並將控制的值恢復爲defaultValue(任何輸入控件的屬性)的值。

希望一些想法會有所幫助。