您好我有一个Windows窗体应用程序。我有一个文本框。我希望实现一种功能,例如当用户点击文本框时,应该为用户提供一个列表,然后在文本框中填写从列表中选择的项目。如果某些其他控件的焦点不在文本框中,则该列表不可用。有什么更好的方法呢?我应该以与文本框相同的形式实现列表,还是应该使用另一个表单作为列表?
我想实现Tally Accounting中的功能 软件
答案 0 :(得分:1)
制作一个包含panel
的listView使用面板时,您可以更改Visible属性以隐藏其中的所有内容。
panel1.Visible = true; //visible
panel1.Visible = false; //invisible
现在你可以说:当textbox is clicked向我显示列表时:
private void textbox1_Click(object sender, EventArgs e)
{
panel1.Visible = true;
}
现在,当表单获得焦点时,您可以隐藏列表:
private void form1_Click(object sender, EventArgs e)
{
panel1.Visible = false;
}
当选定的item of the List changes设置文本框的文本时:
private void ListView1_ItemSelectionChanged(Object sender, ListViewItemSelectionChangedEventArgs e)
{
foreach ( ListViewItem item in ListView1.SelectedItems)
{
textbox1.Text = item.SubItems[1].Text;
}
}
答案 1 :(得分:0)
您可以使用文本框控件的一些事件。
您可以使用Enter和Leave来控制列表的.Visible或.Enabled属性。
使用一个列表并使用enter和leave动态填充。您需要一个标记来指示您正在操作的文本框。
实施例
TextBox activeText;
private void txtBox1_Enter(object sender, EventArgs e)
{
lstMyList.dataSource = list1Data;
activeText = (TextBox)sender;
}
private void lstMyList_SelectedValueChanged(object sender, EventArgs e)
{
ListBox myList = (ListBox)sender;
activeText.Text = myList.SelectedValue.ToString();
}
也许是这样的?
答案 2 :(得分:0)
在我看来,使用单独的表格,并以新的形式显示所有列表。单击文本框,您需要显示新表单。
对于获取所选项目,有很多方法
方法1。
FORM2 frm = new FORM2(LIST<string> items)
frm.ShowDailog();
textBox1.text = add items from items
方法2。
FORM2 frm = new FORM2()
if(frm.ShowDailog() == DialogResults.Ok)
{
textBox1.text = frm.GetSelectedItems();
}