0

我想知道是否可以在此处添加名称而不是数字,以便在文本框中进一步显示它们:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;


namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        List<int> names = new List<int>();
        private void Form1_Load(object sender, EventArgs e)
        {
            nmstxtbx.Text = "";

            combo_list.Items.Add("Ahmed");
            names.Add("Atef");

            combo_list.Items.Add("Omar");
            names.Add(5000);

            combo_list.Items.Add("Mohamed");
            names.Add(4000);
        }
        public Form1()
        {
            InitializeComponent();
        }

        private void combo_list_SelectedIndexChanged(object sender, EventArgs e)
        {
            nmstxtbx.Text = names[combo_list.SelectedIndex].ToString();
        }
    }
}

所以请在这里是一个真正的菜鸟,任何人都可以帮忙,我还在问如果我想创建一个包含一些名称的组合框,我必须写什么,并希望允许用户键入其中一个条目,当他按回车,名字消失了,谁能帮帮我?

4

2 回答 2

0

不确定您要达到什么目标,但是:

names.Add("Atef")- 不会工作,因为namesint类型 - 你必须将其更改为

List<string> names = new List<string>()

要通过将项目输入文本框来删除项目,请使用:

 private void nmstxtbx_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)13)
            {
                if (combo_list.Items.Contains(nmstxtbx.Text))
                    combo_list.Items.Remove(nmstxtbx.Text);
            }
        }
于 2013-10-13T20:54:01.277 回答
0

如果您需要将 Names 和它们的 Number 相互关联,那么拥有一个将这些信息保存在一起的类会容易得多,例如一个NameDTO包含 anId和 a的类Name

public class NameDTO
{
    public int   Id { get; set; }
    public string Name { get; set; }
}

您现在可以在表单中使用该类的列表来保存所有名称:

List<NameDTO> names = new List<NameDTO>();

在表单加载事件中,您填写您的列表并将其分配给Datasource组合框。您可以使用组合框的DisplayMemberValueMember属性来指示要查看 NameDTO 中的哪些属性:

private void Form1_Load(object sender, EventArgs e)
{
    names.Add( new NameDTO{ Id =2000, Name = "Ahemd"});
    names.Add(new NameDTO { Id = 5000, Name = "Omar" });
    names.Add(new NameDTO { Id = 4000, Name = "Mohamed" });

    comboBox1.DataSource = names;
    comboBox1.DisplayMember = "Name";
    comboBox1.ValueMember = "Id";
}

在您的事件中,您现在可以在组合框的属性中SelectedIndexChanged获取 NameDTO 对象。SelectedItem

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{

   var si = (NameDTO) comboBox1.SelectedItem;
   nmstxtbx.Text = si.Name;
   // or the number is in  si.Id
} 

要删除选定的项目,请使用带有其单击事件的按钮:

private void button2_Click(object sender, EventArgs e)
{
    names.Remove((NameDTO)comboBox1.SelectedItem);
}
于 2013-10-13T21:09:48.180 回答