-2

对于我的 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;
        }
    }
}
}

但不知何故,当我在列表框中选择“MECHANICS”(在上面名为“主题”的代码中)时,第二个列表框(上面名为“Var”)只是保持空

任何帮助将不胜感激

4

3 回答 3

0

1-在 form_load 事件中绑定您的第一个名为“主题”的列表

2- 在您的第一个列表的 SelectedIndexChanged 事件中检查所选项目

并填写第二个清单

这是完整的代码,对我来说很好用

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

        }
    }
}
于 2013-10-10T12:17:43.487 回答
0

我认为您需要在DisplayMember使用.ValueMemberVarDataSource

如果 DataSource 是一个对象,那么DisplayMember它将用作文本显示的对象成员(在您的情况下当前为空白),并ValueMember用于确定SelectedValue对绑定有用的列表控件的属性。

例如,如果您VarItemsMechanics填充了以下类:

public class Mechanic
{
    public int ID { get; set; }
    public string Name { get; set; }
}

然后您可能想要将 设置DisplayMember"Name"并且您可能希望将 设置ValueMember"ID"(主观的)。

于 2013-10-07T16:22:24.007 回答
0

尝试改变

if (PhysCalc.Topic.GetItemText(PhysCalc.Topic.SelectedItem) == "MECHANICS")

对此:

if (PhysCalc.Topic.Items[PhysCalc.Topic.SelectedIndex].ToString() == "MECHANICS")
于 2013-10-07T16:25:17.957 回答