如何设置相同的按钮事件列表框(值),索引或树状节点? [英] How to set same button events for ListBox (value) index or treeview nodes?
问题描述
我有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屋!