如何从ListBox的动态添加的选定项中获取值

时间:2016-07-19 10:12:10

标签: c# winforms

我在winform中的面板上动态添加了一个列表框。我想从所选项目中获取价值,但我没有设法做到这一点。我很清楚为什么,但我不知道怎么做。

这是我的代码:

In [90]:
df = pd.DataFrame(np.random.randn(5,3), columns=list('abc'))
df

Out[90]:
          a         b         c
0 -1.002036 -1.703049  2.123096
1  0.497920  1.556211 -1.807895
2  0.400020 -0.703138  1.452735
3 -0.296604 -0.227155 -0.311047
4 -0.314948 -0.654925 -0.434458

In [91]:
df['a'].iloc[2:4]

Out[91]:
2    0.400020
3   -0.296604
Name: a, dtype: float64

In [92]:
df[['a']].iloc[2:4]

Out[92]:
          a
2  0.400020
3 -0.296604

所以这项工作很好,它在我的面板上添加,我可以选择一个项目但没有任何反应。

我很确定这是因为我无法添加( private void App1button_Click(object sender, EventArgs e) { ListBox ListBoxapp = new ListBox(); PanelLB.Controls.Add(ListBoxapp); string[] item = GetDesktopWindowsTitles(); foreach (string app in item) { ListBoxapp.Items.Add(app); } ListBoxapp.BackColor = System.Drawing.SystemColors.InfoText; ListBoxapp.Size = new System.Drawing.Size(321, 135); ListBoxapp.Font = new System.Drawing.Font("Lucida Console", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); if (ListBoxapp.SelectedItem != null) { MessageBox.Show("App selected is" + ListBoxapp.SelectedItem.Tostring()) } } 之后**)

ListBoxapp.Font

它告诉我ListBoxapp.SelectedIndexChanged += new System.EventHandler(ListBoxapp_SelectedIndexChanged); 不存在。但考虑到它是动态添加的,我无法用优先级"来做。我不知道hwo以不同的方式添加它。谢谢。

1 个答案:

答案 0 :(得分:2)

定义事件,订阅它并使用sender发送ListBox:

private void ListBoxapp_SelectedIndexChanged(object sender, EventArgs e)
{
     ListBox lBox = sender as ListBox;

     // do whatever you want
}

将此添加到您发布的代码中:

ListBoxapp.SelectedIndexChanged += ListBoxapp_SelectedIndexChanged;