C# 如何从列表框中获取特定项以显示在txt框中
我目前正在制作一个程序,让用户选择一个ID号,用户从列表框中选择的ID号将在三个单独的txt框中显示名字、姓氏和爱好。从ID、姓名和爱好中获取的数据都是从csv文件中读取的。如何准确地选择一个ID以在txt框中显示所需的数据C# 如何从列表框中获取特定项以显示在txt框中,c#,visual-studio,C#,Visual Studio,我目前正在制作一个程序,让用户选择一个ID号,用户从列表框中选择的ID号将在三个单独的txt框中显示名字、姓氏和爱好。从ID、姓名和爱好中获取的数据都是从csv文件中读取的。如何准确地选择一个ID以在txt框中显示所需的数据 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq;
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 StudentInformation
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
List<ID> events = new List<ID>();
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
string[] lines = System.IO.File.ReadAllLines("class.csv");
{
foreach(var line in lines)
{
String[] words = line.Split(',');
string Id = words[0];
string last = words[1];
string first = words[2];
string hobby = words[3];
listBox1.Items.Add(last);
double.Parse(listBox1.SelectedItems) ==
}
}
}
}
}
您可以在后端设置词典-从下拉列表中选择的项将是词典的键(在解析csv时设置) 然后在列表框索引中更改代码,您可以执行以下操作
if(string.IsNullOrWhiteSpace(listbox1.Text))
{
//clear textboxes here
}
else
{
var student = studentDictionary[listbox1.Text];
//populate textboxes here
}
不过,有些轻微的通用编码技巧可以在类和对象命名约定上使用。永远不要将类命名为“ID”-即使您的类表示ID,也要更加具体,因为ID在任何地方都被用作属性。根据您对该项目的关注程度,在将csv加载到字典中时,您可能还需要进行一些检查,以确保没有重复的学生、具有空值的学生或加载空csv行的学生。您可能还应该将ID设置为公共类,并将其字段设置为公共
编辑:
你可能还想考虑切换到DoopDopDype DROPPDROW列表的组合框——看起来它可能更适用于你的情况
你可以在后端设置一个字典——从下拉菜单中选择的项目将是你的字典的关键(当你解析CSV时你会设置它) 然后在列表框索引中更改代码,您可以执行以下操作if(string.IsNullOrWhiteSpace(listbox1.Text))
{
//clear textboxes here
}
else
{
var student = studentDictionary[listbox1.Text];
//populate textboxes here
}
不过,有些轻微的通用编码技巧可以在类和对象命名约定上使用。永远不要将类命名为“ID”-即使您的类表示ID,也要更加具体,因为ID在任何地方都被用作属性。根据您对该项目的关注程度,在将csv加载到字典中时,您可能还需要进行一些检查,以确保没有重复的学生、具有空值的学生或加载空csv行的学生。您可能还应该将ID设置为公共类,并将其字段设置为公共
编辑:
您可能还想考虑切换到DoopDopDype DROPPINDOWS列表的组合框——看起来它可能更适用于您的情况
您可以定义<代码>列表>代码>,并通过LINQ.</P>查询相应的项。 此外,还需要在classID
中定义相应的属性
class ID
{
public string Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Hobby { get; set; }
public ID(string eId, string eFirstName, string eLastName, string eHobby)
{
Id = eId;
FirstName = eFirstName;
LastName = eLastName;
Hobby = eHobby;
}
}
下面是一个使用LINQ的简单演示
// list to store all items
List<ID> iDs = new List<ID>();
private void Form1_Load(object sender, EventArgs e)
{
// get data from csv
string[] lines = System.IO.File.ReadAllLines("class.csv");
{
foreach (var line in lines)
{
String[] words = line.Split(',');
string Id = words[0];
string last = words[1];
string first = words[2];
string hobby = words[3];
// add items to list
iDs.Add(new ID(Id, last, first, hobby));
// add ids to listbox
listBox1.Items.Add(Id);
}
}
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
// LINQ query
ID id = iDs.Where(x => x.Id == listBox1.Text).FirstOrDefault();
tblast.Text = id.LastName;
tbfirst.Text = id.FirstName;
tbhobby.Text = id.Hobby;
}
//用于存储所有项目的列表
列表ID=新列表();
私有void Form1\u加载(对象发送方、事件参数e)
{
//从csv获取数据
string[]line=System.IO.File.ReadAllLines(“class.csv”);
{
foreach(行中的var行)
{
String[]words=line.Split(',');
字符串Id=单词[0];
字符串last=单词[1];
第一个字符串=单词[2];
字符串爱好=单词[3];
//将项目添加到列表中
添加(新ID(ID,最后一个,第一个,爱好));
//将ID添加到列表框
listBox1.Items.Add(Id);
}
}
}
私有无效列表框1\u SelectedIndexChanged(对象发送方,事件参数e)
{
//LINQ查询
ID ID=ID.Where(x=>x.ID==listBox1.Text).FirstOrDefault();
tblast.Text=id.LastName;
tbfirst.Text=id.FirstName;
tbhobby.Text=id.Hobby;
}
您可以定义一个列表
,并通过LINQ查询相应的项目
此外,还需要在classID
中定义相应的属性
class ID
{
public string Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Hobby { get; set; }
public ID(string eId, string eFirstName, string eLastName, string eHobby)
{
Id = eId;
FirstName = eFirstName;
LastName = eLastName;
Hobby = eHobby;
}
}
下面是一个使用LINQ的简单演示
// list to store all items
List<ID> iDs = new List<ID>();
private void Form1_Load(object sender, EventArgs e)
{
// get data from csv
string[] lines = System.IO.File.ReadAllLines("class.csv");
{
foreach (var line in lines)
{
String[] words = line.Split(',');
string Id = words[0];
string last = words[1];
string first = words[2];
string hobby = words[3];
// add items to list
iDs.Add(new ID(Id, last, first, hobby));
// add ids to listbox
listBox1.Items.Add(Id);
}
}
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
// LINQ query
ID id = iDs.Where(x => x.Id == listBox1.Text).FirstOrDefault();
tblast.Text = id.LastName;
tbfirst.Text = id.FirstName;
tbhobby.Text = id.Hobby;
}
//用于存储所有项目的列表
列表ID=新列表();
私有void Form1\u加载(对象发送方、事件参数e)
{
//从csv获取数据
string[]line=System.IO.File.ReadAllLines(“class.csv”);
{
foreach(行中的var行)
{
String[]words=line.Split(',');
字符串Id=单词[0];
字符串last=单词[1];
第一个字符串=单词[2];
字符串爱好=单词[3];
//将项目添加到列表中
添加(新ID(ID,最后一个,第一个,爱好));
//将ID添加到列表框
listBox1.Items.Add(Id);
}
}
}
私有无效列表框1\u SelectedIndexChanged(对象发送方,事件参数e)
{
//LINQ查询
ID ID=ID.Where(x=>x.ID==listBox1.Text).FirstOrDefault();
tblast.Text=id.LastName;
tbfirst.Text=id.FirstName;
tbhobby.Text=id.Hobby;
}