【问题标题】:Form 2 textbox displays in form 1 listbox表格 2 文本框显示在表格 1 列表框中
【发布时间】:2019-07-20 19:03:27
【问题描述】:

我目前有两种形式,一种用于在从列表框中选择用户时显示信息(列表框列出名称,选择后它将填充我拥有的几个文本框,一个用于城市,另一个用于地址),第二个表单允许我为用户输入信息,当我单击提交时,这些信息将显示在 form1 的列表框中。目前,我能够将用户从我的第二个表单添加到我的第一个表单到列表框中,但是每当我在列表框中单击他们的姓名时,我都会在文本框中填写他们的信息时遇到问题。

到目前为止,我已经尝试过实现不同的代码 sn-ps,但作为初学者我不知道该怎么做。

我的第一个表格如下

 public Form1()
{
   InitializeComponent();
}

private void ButtonAddUser_Click(object sender, EventArgs e)
{
   Form2 form = new Form2(textBoxFirstName.Text, listBoxUsers);
   form.Owner = this;
   form.ShowDialog();
   form.Show();
}

private void listBoxUser_SelectedIndexChanged(object sender, EventArgs e)
{
   if (listBoxUser.SelectedIndex != -1)
    {
      User selected = (User)listBoxUser.SelectedItem;
      textBoxStreet.Text = selected.Street;
      textBoxCity.Text = selected.City;
    }
}

我添加用户信息的第二个表单如下

public partial class Form2 : Form
{
   private ListBox _listBoxUsers;
   public Form(string value, ListBox listBoxUser)
   {
     InitializeComponent();
     value=($"{textBoxFirstName.Text} {textBoxLastName.Text}");
     _listBoxUsers = listBoxUsers;
   }

   private void ButtonSubmit_Click(object sender, EventArgs e)
   {
      _listBoxUsers.Items.Add($"{textBoxFirstName.Text} 
      {textBoxLastName.Text}");

      this.Close();
   }

}

还有我试图存储文本框信息的班级

public class User : EventArgs
{
     public string Street {get; set;}
     public string City {get;set;}

    public User(string street, string city)
  {
     Street = street;
     City = city;
  }

}

简而言之:我正在尝试将第二个表单中的信息保存到我的班级中,当我从列表框中选择一个用户时,它会将他的街道和城市显示到文本框中(我的列表框和文本框都在我的第一个表单中.).

感谢您的帮助

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    在第二种形式中,您应该创建 User 对象并填写街道和城市等详细信息。

    private void ButtonSubmit_Click(object sender, EventArgs e)
    {
        User user = new User(textBoxFirstName.Text, textBoxLastName.Text);
        _listBoxUsers.Items.Add(user);
    
        this.Close();
    }
    

    由于 Listbox.Items 需要对象类型,因此您可以添加从 System.Object 派生的任何内容。但是在 form1 中,您创建了包含用户对象的列表,并且在更改选定索引期间,您将类型转换为用户对象。但是在 form2 中,您在提交按钮 click 期间实际上并没有插入 User 对象。

    因此,我认为您正面临这个问题。尝试使用上面的代码并检查

    【讨论】:

    【解决方案2】:

    我建议将状态管理与演示文稿分离。例如,尝试为User 创建一个不是从EventArgs 派生的单独类。并在一个单独的类中管理其状态 - 因为 start int 将是内存存储。但是,当您充实您的实现时,您可以稍后轻松地将数据移动到数据库,因为它不会依赖 UI 及其元素进行存储和管理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-12
      • 1970-01-01
      • 2019-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多