根据C#2019中组合框中的值选择一个类

时间:2019-11-21 10:47:13

标签: c#-4.0

我的C#窗口应用程序中有一个MainForm窗口。在这种形式下,我有一个带有3个值的组合框。 值包括Apple,Orange和Banana。

我还有3个专门用于这些组合框值的其他类。假设用户在组合框中选择了Apple, 那么Apple的班级将成为工作模块。如果用户在组合中选择“香蕉”,则工作模块将是“香蕉”类。

例如,我运行该应用程序。 MainForm已加载。用户从组合框中选择Apple。然后与MainForm一起使用的类将是Apple类。即在MainForm中,将创建Apple对象并访问apple类的方法。如果用户选择香蕉,那么应该有一种方法可以选择香蕉类作为Mainform的工作类。 [即,在主窗体内部,创建了Banana类的对象,并访问了香蕉的方法 课]。

简而言之,Apple / Orange / Banana类中有一些方法。我想 将这些水果的值更新为MainForm中的标签。所以,当我跑步 在应用程序中,将显示主窗体,并且用户选择Apple 组合框中的值。那么当前的工作模块将是Apple类。 当用户单击Mainform中的按钮时,Apple类中正在进行一些计算,并且值将更新MainClass中的标签。[即,在Apple类中生成并显示在MainForm中的值] < / p>

执行此操作的正确方法是什么。我对此一无所知。

1 个答案:

答案 0 :(得分:0)

您可以先为水果定义一个公共接口/基类。这将作为创建要绑定到ListBox的集合的基础。例如,

public interface IFruit
{
    string FruitName { get; }
    double GetPrice();
}

public class Apple : IFruit
{
    public string FruitName => nameof(Apple);

    public double GetPrice()
    {
        return 1.0;
    }
}

public class Orange : IFruit
{
    public string FruitName => nameof(Orange);
    public double GetPrice()
    {
        return 2.0;
    }
}

public class Banana : IFruit
{
    public string FruitName => nameof(Banana);
    public double GetPrice()
    {
        return 3.0;
    }
}

现在,您可以通过创建列表来绑定列表框。

 var fruitCollection = new List<IFruit> 
 {
   new Apple(),
   new Orange(),
   new Banana(),
 };

 fruitListBox.DataSource = fruitCollection;
 fruitListBox.DisplayMember = nameof(IFruit.FruitName);

最后,当您需要在所选项目上执行方法时,可以使用

 var price = (fruitListBox.SelectedItem as IFruit).GetPrice();