我想知道我是否可以在此添加名称而不是数字,以便在文本框中进一步显示:
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();
}
}
}
所以请在这里找到一个真正的菜鸟,任何人都可以提供帮助,如果我想创建一个包含一些名称的组合框,并且想让用户输入其中一个条目,我也会问我要写什么当他按下回车时,名字消失了,任何人都可以帮我吗?
答案 0 :(得分:0)
不确定你想要达到的目的但是:
names.Add("Atef")
- 因names
为int
类型而无效 - 您必须将其更改为
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);
}
}
答案 1 :(得分:0)
如果您需要名称及其编号彼此相关,则可以更容易地拥有一个将此信息保存在一起的类,例如包含NameDTO
和{Id
的{{1}}类{1}}。
Name
现在,您可以在表单中使用该类的列表来保存所有名称:
public class NameDTO
{
public int Id { get; set; }
public string Name { get; set; }
}
在表单加载事件中,您填写列表并将其分配给Combobox的List<NameDTO> names = new List<NameDTO>();
。您可以使用组合框的Datasource
和DisplayMember
属性来指明您想要查看的NameDTO中的哪些属性:
ValueMember
在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
}