获取从其他表单中选择的项目

时间:2012-10-26 10:45:00

标签: c# winforms

enter image description here您好我有一个Windows窗体应用程序。我有一个文本框。我希望实现一种功能,例如当用户点击文本框时,应该为用户提供一个列表,然后在文本框中填写从列表中选择的项目。如果某些其他控件的焦点不在文本框中,则该列表不可用。有什么更好的方法呢?我应该以与文本框相同的形式实现列表,还是应该使用另一个表单作为列表?


  

我想实现Tally Accounting中的功能   软件


3 个答案:

答案 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. 将LIST参数发送到新表单(构造函数)
  2. 在表格关闭时获取新表格的方法
  3. 静态全局变量
  4. 方法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();
    }