如何将listBox中的选定字符串与c#中的另一个String进行比较

时间:2013-10-07 16:14:47

标签: c# string winforms listbox compare

对于我的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')只是保持空白

任何帮助都将非常感激

3 个答案:

答案 0 :(得分:0)

我认为您在使用DisplayMember时需要在ValueMember列表控件上设置VarDataSource属性。

如果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;
            }

        }
    }
}