繁体   English   中英

如何显示从列表框到文本框的选定索引

[英]how to show Selected index from listbox to text box

我正在创建一个程序,允许用户单击列表框中的 ID,它将显示 csv 数据文件中的图片、名字、姓氏和爱好。 我在尝试显示名称时遇到问题,我不断收到的错误是您无法将字符转换为字符串。 在第 32 行,它尝试将数据输入到 txtLast.text 是错误所在。 它说不能将 char 隐式转换为字符串,并且它返回一个零基索引。

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();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            
        }
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string[] lines = System.IO.File.ReadAllLines("class.csv");
            foreach (var line in lines)
            {
                String[] words = line.Split(',');
                string StudentId = words[0];
                string last = words[1];
                string first = words[2];
                string hobby = words[3];
                listBox1.Items.Add(StudentId);
                txtLast.Text = last [listBox1.SelectedIndex];
                //txtLast.Text = last[listBox1.SelectedIndex];
            }
            Image[] images = { Properties.Resources.Image1, Properties.Resources.Image1, Properties.Resources.Image1,
                Properties.Resources.Image1,Properties.Resources._700684235,Properties.Resources.Image1,Properties.Resources.Image1,
                Properties.Resources._700640699,Properties.Resources._700690019,Properties.Resources._700653005,Properties.Resources._700688218,
                Properties.Resources._700696692,Properties.Resources.Image1,Properties.Resources.Image1,Properties.Resources._700661732,
                Properties.Resources.Image1,Properties.Resources._700645894,Properties.Resources._700658141,Properties.Resources._700644980,
                Properties.Resources._700683782,Properties.Resources._700672657,Properties.Resources._700690042,Properties.Resources._700684588,};

        }

        private void btnSave_Click(object sender, EventArgs e)
        {

        }
    }
}

我不确定你到底想做什么,但如果你在 char 之后添加 .ToString() 它将把 char 转换回字符串,防止错误(除非你的 listBox1.SelectedIndex 大于长度学生的姓氏)。

last[listBox1.SelectedIndex].ToString();

txtLast.Text = 最后; 将工作

它应该可以正常工作,因为 last 已经是字符串。

您实际上是通过传递列表框索引从字符串中获取字符。 因此只接收一个字符。

似乎您正在尝试在项目选择更改方法上将数据绑定到 ListBox 希望下面的说明会有所帮助。

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            PopulateListBoxData();
        }
        
        private void PopulateListBoxData()
        {
            //1. Select data from CSV File
            string[] lines = System.IO.File.ReadAllLines("class.csv");
            //2. Convert it to datatable
            //3. Bind Data To Listbox
            listBox1.DataSource = oTable;
            listBox1.ValueMember = "ID";
            listBox1.DisplayMember = "LastName"; //What ever name(First+Last)
        }
        
        
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            //4. When Item list clicked this method will fire
            string value = listBox1.SelectedValue.ToString().Trim();
            string seletedtext = listBox1.SelectedItem.ToString().Trim();


            if (string.IsNullOrEmpty(value))
            { 
                //Save to DB 0r Display Item
            }
        }

        private void btnSave_Click(object sender, EventArgs e)
        {

        }
    }


*CSV Format(class.csv)
 
 ID,LastName,FirstName,Hobby 
 1,Tom,William,Game 
 2,Adams,Smile,Tennis
 3,Kei,Hetath,Circket*

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM