【问题标题】:Getting a listbox item into several textboxes将列表框项放入多个文本框中
【发布时间】:2015-11-21 21:18:40
【问题描述】:

我正在尝试使列表框中的项目(或字符串)出现在 3 个不同的文本框中。该字符串从用户输入添加到列表框中。到目前为止,我已经设法让三个文本框在每个文本框中显示整个字符串。虽然我希望他们展示不同的东西。所以我将用户输入字符串拆分为一个包含三个值的数组,但我似乎无法让它在三个文本框中显示相关信息。我还应该提到,文本框应该只在选择列表框项时显示它们的值。

 private void firstContacts_SelectedIndexChanged(object sender, EventArgs e)
    {
        //firstContacts is the listbox
        //txtFirstName, txtLastName and txtPhoneNumber are the 3 different textboxes

        if (firstContacts.SelectedItem != null)
        {
            txtFirstName.Text = firstContacts.GetItemText(firstContacts.SelectedItem);
            txtLastName.Text = firstContacts.SelectedItem.ToString();
            txtPhoneNumber.Text = firstContacts.SelectedItem.ToString();
        }

private void btnSaveContact_Click(object sender, EventArgs e)
    {
        if (this.txtNewContact.Text != "")
        {
            try
            {
                string[] delimiters = new string[] { "," };
                string[] stringArray = txtNewContact.Text.Split(delimiters, StringSplitOptions.None);

                Contact person = new Contact(stringArray[0], stringArray[1], stringArray[2]);
                firstContacts.Items.Add(person);


class Contact
    {
        public Contact(string firstName, string lastName, string phoneNumber) //Constructor
        {
            this.FirstName = firstName;
            this.LastName = lastName;
            this.PhoneNumber = phoneNumber;
        }
        public override string ToString()
        {
            return LastName.TrimStart(' ') + " " + FirstName + PhoneNumber;
        }
        //Properties
        public string FirstName { get; private set; } 
        public string LastName { get; private set; }
        public string PhoneNumber { get; private set; }
    }

【问题讨论】:

    标签: c# listbox


    【解决方案1】:

    因此,假设不同的事物用空格分隔(例如“firstname lastname 12345678”),那么这应该可以工作。

    private void firstContacts_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (firstContacts.Focused)
        {
            string[] words = firstContacts.SelectedItem.ToString().Split(" ".ToCharArray());
            if (words.Length != 3)
            {
                throw new Exception("Wrong format");
            }
            txtFirstName.Text = words[0];
            txtLastName.Text = words[1];
            txtPhoneNumber.Text = words[2];
        }
    

    并在取消选择项目时将文本框设置为空白。

    private void firstContacts_Unselected(object sender, EventArgs e)
    {
        txtFirstName.Text = "";
        txtLastName.Text = "";
        txtPhoneNumber.Text = "";
    }
    

    【讨论】:

    • 这正是我想要的。我只是不知道如何到达那里......现在我将正确的值添加到正确的文本框中 - 谢谢!
    【解决方案2】:

    我认为您需要处理字符串方法。下面的代码应该可以帮助您获得每个文本框所需的值。

            string myString = "FirstName$Surname$PhoneNumber"; // listBox selected string value
    
            string myFirstName = myString.Substring(0, myString.IndexOf("$")); // YOU CAN REPLACE THE $ CHARECTER WITH WIGHT SPACE ONE.
            myString = myString.Substring(myString.IndexOf("$") + 1);
    
            string mySurname = myString.Substring(0, myString.IndexOf("$"));
            myString = myString.Substring(myString.IndexOf("$") + 1);
    
            string myPhoneNum = myString;
    
            Console.WriteLine("myFirstName:" + myFirstName);
            Console.WriteLine("mySurname:" + mySurname);
            Console.WriteLine("myPhoneNum:" + myPhoneNum);
    

    【讨论】:

      猜你喜欢
      • 2023-03-15
      • 1970-01-01
      • 2015-08-11
      • 2013-04-07
      • 1970-01-01
      • 2011-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多