0

MSHTML を使用して HTML を編集する .NET フォーム コントロールを作成しています。私はいくつかのカスタム要素を作成しており、それらを効果的に読み取り専用にしたいと考えています。フォーカスがその要素のどこかに入力されたときはいつでも要素全体に焦点を当てることでこれを行うことができると思いましたが、HtmlElement.Focus() は要素全体を選択せず​​、カーソルのエントリをキャプチャできないようです.

別のオプションは、要素のテキストが変更されるたびにイベントを発生させることです (KeyDown で期待しています) が、そのイベントを発生させることもできません。イベントの動作に関する私の期待が間違っている理由、または実装のための代替提案についてのアイデアはありますか?

4

2 に答える 2

1

属性を設定することがわかりました:

contentEditable=false

望ましい動作になりました。

于 2008-10-07T17:25:38.370 に答える
0

ユーザー入力コントロールに読み取り専用の動作を適用しようとしている場合は、そのコントロールの @readonly 属性を使用してみてください。それ以外の場合は、適切な UI イベント (keydown、mousedown) のイベント リスナーを追加して、デフォルトの動作 (false を返す、または event.returnValue = false) を防止することもできます。カスタム イベントのディスパッチに関しては、実際にそれを行うことができます。IE が認識しているイベント名を使用します。もう 1 つのヒントとして、onchange イベント ハンドラーを登録し、コントロールの値を defaultValue (任意の入力コントロールのプロパティ) の値に戻します。

いくつかのアイデアが役立つことを願っています。

于 2008-10-07T09:50:34.937 に答える