如何设置相同的按钮事件列表框(值),索引或树状节点? [英] How to set same button events for ListBox (value) index or treeview nodes?

查看:121
本文介绍了如何设置相同的按钮事件列表框(值),索引或树状节点?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有C#的Win-形式,如下所示。我也有几阵作为列表框的菜单。

I have C# Win-form as shown below. I also have few array as a menu for List-box.

public string[] ArrayMain = {"1.Water","2.Air","3.Soil","4.Fire"};
public string[] ArrayWater = {"1.Salty","2.Fresh", "3.Contaminated"};
public string[] ArraySalty = {"1.AA", "2.BB", "3.CC"};
public string[] ArrayFresh = {"1.DD", "2.EE", "3.FF"};
public string[] ArrayContaminated = {"1.XX", "2.YY", "3.ZZ"} ;
public string[] ArrayAir = {"1.Fresh", "2.Contaminated"};
public string[] ArraySoil = {"1.Normal", "2.Contaminated"};
public string[] ArrayFire = {"1.Low","2.Mid","3.High"};

在应用启动的主列表框装有第一个数组值。

When the application start in the Main List-box loaded with first array values.

public Form1()
{
    InitializeComponent();
    ListBoxMain.Items.AddRange(ArrayMain);
    listView1.Items.Add(ArrayMain[0])
    // User choose: 1.Water
}

如果用户preSS按钮1,那么应用程序将清除主列表框和负载与选择。这一次,列表框加载;

If user press button 1 then application clears the Main List-box and loads with that selection. This time List-box loaded with;

ListBoxMain.Items.AddRange(ArrayWater);
listView1.Items.Add(ArrayMain[0])
// User choose: 1.Salty

现在,如果用户preSS按钮2,那么应用程序将清除主列表框和所选的菜单列表框都会有这样的值;

Now if the user press button 2 then application clears the Main List-box and the Selected Menus List-Box will have values like;

1.Water
  1.Salty
  2.BB

1.Water 1.Salty 2.BB

然后应用程序将获得的第一个字母(数字)为固定格式等;

Then application will get the first letter (number) as fixed with format like;

112

112

并将其发送到WFC服务。 WFC服务将知道如何处理112做的。我的主要问题是,我必须设置我的列表框索引的所有按钮(或组合框按我说的)。例如,如果用户preSS按钮1第一次那么用户必须选择菜单数组列表框。并再次,如果用户preSS按钮1按钮,然后1已经被连接列表框指数(新值)。

and send it to WFC service. WFC services will know what to do with "112". My major problem is that I have to set all my button for List-box index (or combo-box as I say). Example if user press button 1 first time then user have to select that menus array into List-box. And again if user press button 1 then button 1 have to be connected List-box index (new values).

在这个有趣的问题用户@Eugene建议,我认为我可以把逻辑变成树视图我的previous问题。他表示为;

In my previous question for this interesting problem user @Eugene suggested to me that I can turn the logic into tree-view. And he stated as;

,其中节点都包含用于组合框项目(密钥字符串显示,价值 - 价值以后使用)。当你按下按钮,你将添加相应节点项目为若干队列并装入新项目。在叶节点你会
  包含动作>,将调用相应服务
  方法(许多选项也可以是相同的动作)

我尝试申请多的逻辑和我花了近10天,使模拟器按预期工作,但我失败了。我真的希望有一些信息,所以我可以把我的按钮1 事件列表框(索引)t检讨或(节点)。如果有人点我,甚至如何设置我的按钮1事件,我正上方,然后剩下的声明将是难不倒我。

I try to apply many logic and I spend nearly 10 days to make a simulator works as expected, but I failed. I realy like to have some information so I can set my button 1 events to ListBox (index) or Treview (nodes). If someone point me, even how to set my button 1 events as I stated above then rest will be easy for me.

亲切的问候,

首次应用启动:

用户preSS按钮后:

After the user press buttons:

推荐答案

感谢您@Eugene。我做到了。这就是。

Thank you @Eugene. I made it. Here it is.

对于主;

public Form1()
{
    InitializeComponent();

    TreeNode tNode;
    //MAIN NODE 1
    tNode = treeView1.Nodes.Add("1.Water");
    tNode = treeView1.Nodes.Add("2.Air");
    tNode = treeView1.Nodes.Add("3.Soil");
    tNode = treeView1.Nodes.Add("4.Fire");

    // WATER NODE
    treeView1.Nodes[0].Nodes.Add("1.Salty");
    treeView1.Nodes[0].Nodes.Add("2.Fresh");
    treeView1.Nodes[0].Nodes.Add("3.Contaminated");

    // AIR NODE
    treeView1.Nodes[1].Nodes.Add("1.Fresh");
    treeView1.Nodes[1].Nodes.Add("2.Contaminated");

    // SOIL NODE
    treeView1.Nodes[2].Nodes.Add("1.Normal");
    treeView1.Nodes[2].Nodes.Add("2.Contaminated");

    // FIRE NODE
    treeView1.Nodes[3].Nodes.Add("1.Low");
    treeView1.Nodes[3].Nodes.Add("2.Mid");
    treeView1.Nodes[3].Nodes.Add("3.High");

    // SALTY NODE
    treeView1.Nodes[0].Nodes[0].Nodes.Add("1.AA");
    treeView1.Nodes[0].Nodes[0].Nodes.Add("2.BB");
    treeView1.Nodes[0].Nodes[0].Nodes.Add("3.CC");

    // FRESH NODE
    treeView1.Nodes[0].Nodes[1].Nodes.Add("1.DD");
    treeView1.Nodes[0].Nodes[1].Nodes.Add("2.EE");
    treeView1.Nodes[0].Nodes[1].Nodes.Add("3.FF");

    // CONTAMINATED NODE
    treeView1.Nodes[0].Nodes[2].Nodes.Add("1.XX");
    treeView1.Nodes[0].Nodes[2].Nodes.Add("2.YY");
    treeView1.Nodes[0].Nodes[2].Nodes.Add("3.ZZ");


    //Clear ListBox items
    ListBoxMain.Items.Clear();

    //Load ListBox First time
    foreach (TreeNode n in treeView1.Nodes)
    {
        ListBoxMain.Items.Add(n.Text);
    }
}

对于按钮:

// BTN 1
private void Btn_1_Click(object sender, EventArgs e)
{
    int value = 1 - 1;
    int iCount = ListBoxMain.Items.Count;

    if (iCount > value)
    {
        string item = ListBoxMain.Items[value].ToString();
        TreviewNodesSelection(item, value);
    }
}

// BTN 2
private void Btn_2_Click(object sender, EventArgs e)
{
    int value = 2 - 1;
    int iCount = ListBoxMain.Items.Count;

    if (iCount > value)
    {
        string item = ListBoxMain.Items[value].ToString();
        TreviewNodesSelection(item, value);
    }
}

然后创建一个TreviewNodesSelection:

//TreviewNodesSelection
private void TreviewNodesSelection(string item, int value)
{
    textBox1.Text = item;
    listBoxMenu.Items.Add(item);


    //Find Nodes first
    Traverse(treeView1.Nodes, item);

    //Clear ListBox items
    ListBoxMain.Items.Clear();

    //Get a First ChildNode via Parenet Name
    if (treeView1.SelectedNode.Nodes.Count != 0)
    {
        foreach (TreeNode v in treeView1.SelectedNode.Nodes)
        {
            ListBoxMain.Items.Add(v.Text);
        }
    }
    else
    {
        MessageBox.Show("Now you can start calculation...");
    }
}

这是TreeView节点选择

private void Traverse(TreeNodeCollection nodes, string findtext)
{
    foreach (TreeNode node in nodes)
    {
        if (node.Text.ToString().Trim() == findtext)
        {
            node.TreeView.SelectedNode = node.NextNode;
            treeView1.SelectedNode = node;
            node.TreeView.Focus();
            //MessageBox.Show(node.Text + " is selected...");
        }
        Traverse(node.Nodes, findtext);
    }
}

我学到了很多 http://stackoverflow.com 所以这是我几美分的贡献。

I learn a lot from http://stackoverflow.com so this is my few cent contribution.

亲切的问候

这篇关于如何设置相同的按钮事件列表框(值),索引或树状节点?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆