对于我的Windows窗体应用程序,我试图从listBox中检索所选字符串,我希望它与设置字符串进行比较,这样,如果比较返回true,我可以设置下一个listBox具有特定的,选择相关的值。
namespace PhysCalc
{
public class Selectors
{
public static string[] topicContents = new string[] { "MECHANICS", "THEORY_OF_RELATIVITY" };
public static string[] VarItemsMechanics = new string[] { "Test", "Wavelength" };
public static void SetVarBox()
{
PhysCalc.Topic.DataSource = topicContents;
if PhysCalc.Topic.Items[PhysCalc.Topic.SelectedIndex].ToString() == "MECHANICS")
{
PhysCalc.Var.DataSource = VarItemsMechanics;
}
}
}
}
但不知何故,当我在listBox中选择“MECHANICS”时(在上面的代码名为'Topic'中),第二个listBox(上面名为'Var')只是保持空白
任何帮助都将非常感激
答案 0 :(得分:0)
我认为您在使用DisplayMember
时需要在ValueMember
列表控件上设置Var
和DataSource
属性。
如果DataSource是一个对象,那么DisplayMember
是它将用作文本显示的对象成员(在您的情况下当前是空白的),ValueMember
用于确定{{1}列表控件的属性,可用于绑定。
例如,如果您的SelectedValue
填充了以下类:
VarItemsMechanics
然后您可能希望将public class Mechanic
{
public int ID { get; set; }
public string Name { get; set; }
}
设置为DisplayMember
,可能想要将"Name"
设置为ValueMember
(主观)。
答案 1 :(得分:0)
尝试更改
if (PhysCalc.Topic.GetItemText(PhysCalc.Topic.SelectedItem) == "MECHANICS")
到此:
if (PhysCalc.Topic.Items[PhysCalc.Topic.SelectedIndex].ToString() == "MECHANICS")
答案 2 :(得分:0)
1-绑定您的第一个名单"主题"在form_load事件中
第一个列表的SelectedIndexChanged事件中的2-执行您对所选项目的检查
并填写第二份清单
这是完整的代码,它适用于我
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
{
public Form1()
{
InitializeComponent();
}
public static string[] topicContents = new string[] { "MECHANICS", "THEORY_OF_RELATIVITY" };
public static string[] VarItemsMechanics = new string[] { "Test", "Wavelength" };
private void Form1_Load(object sender, EventArgs e)
{
listBox1.DataSource = topicContents;
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string curItem = listBox1.SelectedItem.ToString();
switch (curItem)
{
case "MECHANICS":
listBox2.DataSource = VarItemsMechanics;
break;
}
}
}
}