我在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以不同的方式添加它。谢谢。
答案 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;