c# 如何使从列表框中选择的项目显示在标签中?
c# How to make that selected item from listbox will be shown in label?
所以我有一个问题,该代码放在 Windows 表格中的什么地方,每次我 select 列表框中的其他项目时它都会被刷新?
我试图放入 listBox1,但它使我的整个程序崩溃,我试图将它放入 public Form2()
但它只显示 label4 中的第一个 selected 项目,并且在我 [=18= 之后不刷新] listBox1 中的其他项目。有什么解决办法吗?
var selected = listBox1.SelectedItem.ToString();
label4.Text = selected;
完整代码如下
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;
using System.IO;`
namespace VocaFlash_Japanese
{
public partial class Form2 : Form
{
public List<string> words = new List<string>();
public string Wor;
public int State = 0;
public Form2()
{
InitializeComponent();
loadfile();
listBox1.DataSource = words;
//var selected = listBox1.SelectedItem.ToString();
// label4.Text = selected;
hidetext();
}
private void hidetext()
{
textBox1.Hide();
textBox2.Hide();
textBox3.Hide();
label1.Hide();
label2.Hide();
label3.Hide();
}
private void showtext()
{
textBox1.Show();
textBox2.Show();
textBox3.Show();
label1.Show();
label2.Show();
label3.Show();
}
public void Save()
{
const string sPath = "Data.txt";
System.IO.StreamWriter sw = new System.IO.StreamWriter(sPath);
foreach (string item in words)
{
sw.WriteLine(item);
}
sw.Close();
}
private void UpdateListBox(List<string> words)
{
//string contents = null;
List<string> itemAll = new List<string>();
foreach (string str in words)
{
itemAll.Add(str);
}
}
/*public void Save(List<string> words)
{
StringBuilder contents = new StringBuilder();
foreach (string s in words)
{
contents.AppendLine(s);
}
System.IO.File.WriteAllText(@"Data.txt", contents.ToString());
}*/
private void loadfile()
{
string line;
var file = new System.IO.StreamReader("Data.txt");
while ((line = file.ReadLine()) != null)
{
words.Add(line);
}
}
/* private void Remove()
{
string contents = null;
List<string> itemAll = new List<string>();
foreach (string str in words)
{
itemAll.Add(str);
}
foreach (string lstitem in listBox1.SelectedItems)
{
itemAll.Remove(lstitem);
//File.AppendAllText(strFile + "Currently In.txt", strName + Environment.NewLine);
}
foreach (string s in itemAll)
{ contents += s + Environment.NewLine; }
System.IO.File.WriteAllText(@"Data.txt", contents);
}*/
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
var selected = listBox1.SelectedItem.ToString();
label4.Text = selected;
}
private void button4_Click(object sender, EventArgs e)
{
Meniu men = new Meniu();
men.Show();
this.Hide();
}
private void button1_Click(object sender, EventArgs e)
{
State += 1;
switch (State)
{
case 1:
showtext();
break;
case 2:
words.Add(textBox1.Text);
listBox1.DataSource = null;
listBox1.DataSource = words;
Save();
State = 0;
textBox1.Text = "";
hidetext();
break;
default:
Console.WriteLine("Default case");
break;
}
}
private void button2_Click(object sender, EventArgs e)
{
/* // The Remove button was clicked.
int selectedIndex = listBox1.SelectedIndex;
try
{
// Remove the item in the List.
words.RemoveAt(selectedIndex);
}
catch
{
}
listBox1.DataSource = null;
listBox1.DataSource = words;
Remove();*/
// The Remove button was clicked.
int selectedIndex = listBox1.SelectedIndex;
try
{
// Remove the item in the List.
words.RemoveAt(selectedIndex); //Remove item from words
UpdateListBox(words);//Update contents on GUI
Save(); //Save on IO
listBox1.DataSource = null;
listBox1.DataSource = words;
}
catch
{
}
}
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
Environment.Exit(0);
}
private void button3_Click(object sender, EventArgs e)
{
}
private void label4_Click(object sender, EventArgs e)
{
}
}
}
您需要在设计器中双击 ListBox1 控件的事件选项卡,让它自动创建 SelectedIndexChanged
只需找到 SelectedIndexChanged
并双击它
在事件中放入以下代码
private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
var selected = listBox1.GetItemText(listBox1.SelectedValue);
label4.Text = selected;
}
所以我有一个问题,该代码放在 Windows 表格中的什么地方,每次我 select 列表框中的其他项目时它都会被刷新?
我试图放入 listBox1,但它使我的整个程序崩溃,我试图将它放入 public Form2()
但它只显示 label4 中的第一个 selected 项目,并且在我 [=18= 之后不刷新] listBox1 中的其他项目。有什么解决办法吗?
var selected = listBox1.SelectedItem.ToString();
label4.Text = selected;
完整代码如下
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;
using System.IO;`
namespace VocaFlash_Japanese
{
public partial class Form2 : Form
{
public List<string> words = new List<string>();
public string Wor;
public int State = 0;
public Form2()
{
InitializeComponent();
loadfile();
listBox1.DataSource = words;
//var selected = listBox1.SelectedItem.ToString();
// label4.Text = selected;
hidetext();
}
private void hidetext()
{
textBox1.Hide();
textBox2.Hide();
textBox3.Hide();
label1.Hide();
label2.Hide();
label3.Hide();
}
private void showtext()
{
textBox1.Show();
textBox2.Show();
textBox3.Show();
label1.Show();
label2.Show();
label3.Show();
}
public void Save()
{
const string sPath = "Data.txt";
System.IO.StreamWriter sw = new System.IO.StreamWriter(sPath);
foreach (string item in words)
{
sw.WriteLine(item);
}
sw.Close();
}
private void UpdateListBox(List<string> words)
{
//string contents = null;
List<string> itemAll = new List<string>();
foreach (string str in words)
{
itemAll.Add(str);
}
}
/*public void Save(List<string> words)
{
StringBuilder contents = new StringBuilder();
foreach (string s in words)
{
contents.AppendLine(s);
}
System.IO.File.WriteAllText(@"Data.txt", contents.ToString());
}*/
private void loadfile()
{
string line;
var file = new System.IO.StreamReader("Data.txt");
while ((line = file.ReadLine()) != null)
{
words.Add(line);
}
}
/* private void Remove()
{
string contents = null;
List<string> itemAll = new List<string>();
foreach (string str in words)
{
itemAll.Add(str);
}
foreach (string lstitem in listBox1.SelectedItems)
{
itemAll.Remove(lstitem);
//File.AppendAllText(strFile + "Currently In.txt", strName + Environment.NewLine);
}
foreach (string s in itemAll)
{ contents += s + Environment.NewLine; }
System.IO.File.WriteAllText(@"Data.txt", contents);
}*/
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
var selected = listBox1.SelectedItem.ToString();
label4.Text = selected;
}
private void button4_Click(object sender, EventArgs e)
{
Meniu men = new Meniu();
men.Show();
this.Hide();
}
private void button1_Click(object sender, EventArgs e)
{
State += 1;
switch (State)
{
case 1:
showtext();
break;
case 2:
words.Add(textBox1.Text);
listBox1.DataSource = null;
listBox1.DataSource = words;
Save();
State = 0;
textBox1.Text = "";
hidetext();
break;
default:
Console.WriteLine("Default case");
break;
}
}
private void button2_Click(object sender, EventArgs e)
{
/* // The Remove button was clicked.
int selectedIndex = listBox1.SelectedIndex;
try
{
// Remove the item in the List.
words.RemoveAt(selectedIndex);
}
catch
{
}
listBox1.DataSource = null;
listBox1.DataSource = words;
Remove();*/
// The Remove button was clicked.
int selectedIndex = listBox1.SelectedIndex;
try
{
// Remove the item in the List.
words.RemoveAt(selectedIndex); //Remove item from words
UpdateListBox(words);//Update contents on GUI
Save(); //Save on IO
listBox1.DataSource = null;
listBox1.DataSource = words;
}
catch
{
}
}
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
Environment.Exit(0);
}
private void button3_Click(object sender, EventArgs e)
{
}
private void label4_Click(object sender, EventArgs e)
{
}
}
}
您需要在设计器中双击 ListBox1 控件的事件选项卡,让它自动创建 SelectedIndexChanged
只需找到 SelectedIndexChanged
并双击它
在事件中放入以下代码
private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
var selected = listBox1.GetItemText(listBox1.SelectedValue);
label4.Text = selected;
}