0

在此处输入图像描述您好我有一个 Windows 窗体应用程序。我有一个文本框。我想实现一个功能,比如当用户单击文本框时,应该向用户提供一个列表,然后从列表中选择的项目应该填充到文本框中。如果文本框以外的某些其他控件被聚焦,则该列表不可用。这样做的更好方法是什么?我应该以与文本框相同的形式实现列表,还是应该为列表使用另一种形式?


我想实现一个类似 Tally 会计软件的功能。


4

3 回答 3

1

制作一个包含listView的面板

当您使用面板时,您可以更改Visible属性以隐藏其中的所有内容。

panel1.Visible = true; //visible
panel1.Visible = false; //invisible

现在您可以说:单击文本框时,显示列表:

private void textbox1_Click(object sender, EventArgs e)
{
    panel1.Visible = true;
}

现在,当表单获得焦点时,您可以隐藏列表:

private void form1_Click(object sender, EventArgs e)
{
    panel1.Visible = false;
}

当列表的选定项目更改设置文本框的文本时:

private void ListView1_ItemSelectionChanged(Object sender, ListViewItemSelectionChangedEventArgs e)
{
    foreach ( ListViewItem item in ListView1.SelectedItems)
    {
        textbox1.Text = item.SubItems[1].Text;
    }
}
于 2012-10-26T10:52:15.563 回答
0

您可以为此使用文本框控件的一些事件。

您可以使用 Enter 和 Leave 来控制列表的 .Visible 或 .Enabled 属性。

使用一个列表并使用进入和离开动态填充。您将需要一个标记来指示您正在操作的文本框。

例子

    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();

    }

也许是这样的?

于 2012-10-26T10:51:17.967 回答
0

在我看来,使用单独的表格,并在新表格中显示所有列表。单击文本框,您需要显示新表单。

对于获取选定的项目有很多方法

  1. 将 LIST 参数发送到新表单(构造函数)
  2. 表单关闭时获取新表单的方法
  3. 静态全局变量

方法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();
}
于 2012-10-26T11:12:50.527 回答