1

WinFormにツリービューコントロールがあり、onChangeイベントを実装する必要があります。ただし、1つはなく、onChangeUIしかないようです。

ツリービューがonChangeイベントをサポートしていない場合、.NETでの同等のイベントは何ですか。

MSDNライブラリを検索しましたが、情報が見つかりませんでした。

更新:補足事項私はwin32プログラムを.netに変換しています。

前もって感謝します、

4

2 に答える 2

3

選択の変更のサポートは、WindowsフォームのTreeViewコントロールで少し制限されています。

基本的に、ツリーノードが選択されたときに反応できるようにするイベントのペア(BeforeSelectAfterSelect )があります。BeforeSelect新しい選択をキャンセルできますが、キャンセルできAfterSelectません(新しい選択がコミットされた後に発生するため)。

ただし、ノードが選択されていない場合、これらのイベントはいずれもトリガーされません。そのケースを検出するには、一般的なMouseUpイベントを処理し、クリックされたノードのIsSelectedプロパティをチェックして、実際の選択状態を取得する必要があります。

于 2012-07-02T13:31:34.287 に答える
1

これは、ネイティブのWindowsコントロールをラップするラッパークラスの一般的な制限です。これは、あなたが知ることができないことについての通知のみを生成します。コントロールに影響を与えるユーザーができることと同じように。それはあなたがすでに知っていることについて思い出させる必要がないという根本的な哲学で、あなたがすることの通知を省略します。

これは確かにTreeViewの場合であり、ユーザーはノードを追加できません。あなただけができます。ノードに表示されるテキストについても同じです。テキストが変更されたことを通知するイベントはありません。ユーザーがノードを編集する非常に特殊な場合を除いて、AfterLabelEditイベント。

TreeViewから独自のクラスを派生させ、それを起動するChangeイベントとOnChange()メソッドを追加できます。メソッドを呼び出すコードを書くのはあなた次第です。これを確実に行うのは難しいことに注意してください。TreeNodeCollectionクラスには仮想メソッドがないため、それらをオーバーライドしてクライアントコードを変更するノードを検出することはできません。実際には、そのコードを記述せずに、TreeViewのコンテンツを変更するメソッドのフォームで内部イベントを生成する方が適切です。

于 2012-07-02T14:27:22.557 に答える