сохранять текстовые поля в массив (и извлекать данные из массива) при использовании дерева в C # - PullRequest
1 голос
/ 06 октября 2010

Хорошо, у меня есть древовидная структура, которую я использую для отображения количества узлов. Я хочу прикрепить данные (три поля текстового поля) к каждому узлу, но не хочу отображать их в дереве. Я хочу сохранить данные в строку [] Array, если это возможно. Я хочу, чтобы данные в полях сохранялись в массивах, когда я щелкаю новый узел в дереве и извлекаю информацию из массивов для нового узла.

По какой-то причине у меня не работает код. Он не сохраняет информацию, а иногда просто показывает случайные данные в текстовых полях, когда я нажимаю. Код:

    These are global variables within the form:
    string[] desc1;
    string[] desc2;
    string[] desc3;

 private void treeView1_BeforeSelect(object sender, TreeViewEventArgs e)
    {

          // save the entered text into the local variables
        desc1[treeView1.SelectedNode.Index] = textBox4.Text;
        desc2[treeView1.SelectedNode.Index] = textBox5.Text;
        desc3[treeView1.SelectedNode.Index] = textBox6.Text;

    }

    private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
    {

        // update labels
        label23.Text = treeView1.SelectedNode.Text.ToString();
        label24.Text = (treeView1.SelectedNode.Index + 1).ToString();

        // enable all textbox fields
        textBox4.Enabled = true;
        textBox5.Enabled = true;
        textBox6.Enabled = true;

        // clear all textbox fields
        textBox4.Text = null;
        textBox5.Text = null;
        textBox6.Text = null;



        // if parent is selected then show as unselected - if not update text fields
        if (treeView1.SelectedNode.Text.ToString() == "Parent Name")
        {
            label23.Text = "Unselected";
            label24.Text = "Unselected";
            textBox4.Enabled = false;
            textBox5.Enabled = false;
            textBox6.Enabled = false;
        }
        else
        {
            // show the information from the array in the text fields
            textBox4.Text = desc1[treeView1.SelectedNode.Index];
            textBox5.Text = desc2[treeView1.SelectedNode.Index];
            textBox6.Text = desc3[treeView1.SelectedNode.Index];
        }

    }

Кто-нибудь имеет представление о том, что я могу сделать? Я трал Google сейчас без 24 часов. Спасибо!

Ответы [ 3 ]

1 голос
/ 06 октября 2010

У TreeNodes есть свойство Tag, которое вы можете использовать для прикрепления любых данных, которые вам нужны.

Вы бы использовали это так:

// To set the data:
myTreeNode.Tag = new string[] { "1", "2", "3" };

// To read the data:
var data = myTreeNod.Tag as string[];
0 голосов
/ 06 октября 2010

Замените все ваши ссылки на SelectedNode вместо TreeViewEventArgs.Node.

Пример кода:

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{

    // update labels
    label23.Text = e.Node.Text.ToString();
    label24.Text = (e.Node.Index + 1).ToString();

    // etc etc...
}
0 голосов
/ 06 октября 2010

Массивы не инициализируются.

...