Treeview.selectednode memberikan nilai yang salah

Saya memiliki tampilan pohon yang memiliki beberapa anak dan banyak dari mereka memiliki nenek moyang. Saya juga memiliki tampilan datagrid di samping tampilan pohon. Berdasarkan node yang dipilih tampilan pohon, saya mengikat data di Datagridview.

Saya menggunakan treeView1.SelectedNode untuk mendapatkan nilai simpul. Masalah saya adalah ekspresi ini memberikan simpul yang dipilih sebelumnya.

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
    node = e.node;
}

ini memberi saya simpul yang benar (simpul yang dipilih). Tetapi

node = treeview1.selectednode berikan node yang saya pilih tadi. Saya ingin mendapatkan node yang dipilih di luar acara klik (_nodemouseclick).

Bagaimana saya mendapatkannya. Saya tidak ingin menyimpan simpul dalam variabel global lalu menggunakannya.

Semoga saya jelas untuk menjelaskan pertanyaan saya.

Terima kasih sebagai antisipasi.


person Hardik    schedule 19.09.2012    source sumber
comment
Gunakan acara AfterSelect sebagai gantinya.   -  person Hans Passant    schedule 19.09.2012
comment
Tidak ada masalah untuk menyimpannya dalam variabel global setelah Anda mendapatkan node yang benar. Lihat jawaban saya   -  person Sami    schedule 19.09.2012


Jawaban (2)


    TreeNode yourGlobalTreeNode;
    void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
    {
        yourGlobalTreeNode = e.Node;
        otherFunction();
        anOtherFunction(e.Node);
    }
    void otherFunction()
    {
        MessageBox.Show(yourGlobalTreeNode.Text);
    }
    void anOtherFunction(TreeNode tn)
    {
        MessageBox.Show(tn.Text);
    }

Fungsi Lainnya berarti Anda dapat menggunakan tree_node ini di mana saja menggunakan dua metode di atas.

person Sami    schedule 19.09.2012
comment
Pribadi tidak perlu ditulis, ini adalah tingkat perlindungan default. - person Sami; 19.09.2012

Itu karena event MouseClick dimunculkan sebelum Node yang dipilih diubah. Coba gunakan acara SelectedItemChanged sebagai gantinya

    private void TreeView1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
    {

    }
person syned    schedule 19.09.2012