我的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>
执行此操作的正确方法是什么。我对此一无所知。
答案 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();