2017-09-28 3 views
-1

私はいくつかのノードを持つツリービューを持っています。ツリーの外側をクリックすると、現在選択されているノードの選択を解除します。 イベントを検出できません。空白をクリックすると、現在選択されているノードが選択されたままになります。Windowsフォームc# - ツリービュー:ツリーの外側をクリックするとアイテムを選択解除します

+1

if(clickedoutsidetree)treeview.selectedItem = null; オブジェクトのクリックイベントを使用して、ツリーなどを表示します。 – rmjoia

+1

正確な答えを示すコードスニペットを提供します。 – Sandy

+0

hi rmjoia。申し訳ありませんが、ツリービューの空白部分をクリックするとトリガーするイベントは分かりますか? – nlkhangit

答えて

0

私が答えを出す前に、試したことを証明する必要があります。あなたのケースでは、フォームにツリービューを追加するコードを複製する例を与えてください。それらの出来事のどれも実行されなかった!とにかく、ここに一つの可能​​な解決策があります。これはあなたのために動作しない場合、それはあなたがの空の部分をクリックすると<citation needed>MouseClickが動作しません何らかの理由であなたのケース

public Form1() 
{ 
    InitializeComponent(); 

    treeView1.Nodes.Add("a"); 
    treeView1.Nodes.Add("b"); 
    treeView1.Nodes.Add("c"); 

    treeView1.LostFocus += (s, e) => ((TreeView)s).SelectedNode = null; 
} 
1

のために最も適切なものをイベントで遊んで選択しなければならないことを意味しますTreeViewコントロール。しかしMouseown行いますTreeViewあなたは、適切なイベントコードができFocusを失ったときに

private void treeView1_MouseDown(object sender, MouseEventArgs e) 
{ 
    var hit = treeView1.HitTest(e.X, e.Y); 

    if (hit.Node == null) 
    { 
     treeView1.SelectedNode = null; 
    } 
} 

あなたはまた、選択解除したい場合:

private void treeView1_Leave(object sender, EventArgs e) 
{ 
    treeView1.SelectedNode = null; 
} 

アップデートをMSDNGotFocusあたりとして

EnterおよびLeaveイベントの場合はLostFocusを避ける必要があります。

のGotFocusとのLostFocusイベントは、WM_KILLFOCUSとWM_SETFOCUS Windowsのメッセージに を結ばされている低レベルのフォーカスイベントです。通常、 GotFocusイベントとLostFocusイベントは、UICues を更新する場合、またはカスタムコントロールを作成する場合にのみ使用されます。代わりに、EnterおよびLeaveイベント は、 ActivatedイベントとDeactivateイベントを使用するFormクラス以外のすべてのコントロールに使用する必要があります。 GotFocusおよびLostFocusイベントの詳細については、WM_KILLFOCUSおよびWM_KILLFOCUS トピックを参照してください。

デフォルトでHideSelectionがオンになっているため、TreeViewがフォーカスを失うと、選択は非表示になりますが有効です。

+1

* never * LostFocusのままにしておきます。 –

関連する問題