0

我在 Visual Studio 中有一个组合框,我在组合框中编辑了字符串以显示 5 个项目,我试图在网上查看,一旦有人单击其中一个项目,如何显示有关该项目的信息。(但是,如果没有单击任何项​​目,则将表单留空)

例如,惠而浦的冰箱,可以冷却到 1 摄氏度,售价 400 美元,24 小时内送达。

因此,一旦有人在组合框中单击“惠而浦冰箱”,它就会在表单标签/文本框上弹出

制造商:Whirlpool 最大冷却:1 摄氏度成本:400 美元交货:24 小时内

另外,我试图找出是否可以在图片框中显示冰箱的图片。但是,我还没有找到解决方案。

我非常感谢您的帮助,很抱歉让您对这个问题感到厌烦!

注意:如果您要将我链接到一个网站,如果您至少能解释一下如何做,我将不胜感激,或者对于喜欢勺子喂食勺的其他人,只需将其粘贴起来,我会想出来。再次感谢你!<:D

编辑:

我正在使用 Windows 窗体应用程序

4

2 回答 2

2

使这更简单的一种方法是通过数据绑定。

假设您有一个设备对象:

public class Appliance
{
    public string Make { get; set; }
    public string ApplianceType { get; set; }
    public string Model { get; set; }
    public double Price { get; set; }
    public string Info { get; set; }

    public string ShowString
    {
        get { return String.Format("{0} {1}", Make, ApplianceType); }
    }
}

并且您想将这些列表绑定到组合框。您可以定义组合框中显示的属性并将所选对象转换回类:

List<Appliance> appliances = new List<Appliance>();

// populate list; for example:
appliances.Add(new Appliance
{
    Make = "Whirlpool",
    ApplianceType = "Fridge",
    Model = "WP-300",
    Price = 500.00,
    Info = "Cools to 4C!"
});
appliances.Add(new Appliance
{
    Make = "Maytag",
    ApplianceType = "Dishwasher",
    Model = "MT-80A",
    Price = 400.00,
    Info = "Washes spot free!"
});

cmbApplianceList.DataSource = appliances;
cmbApplianceList.DisplayMember = "ShowString";

ValueMember您还可以将其绑定到唯一属性。)

当有人在组合框中选择一个项目时,您可以执行以下操作来对选定的类进行操作:

cmbApplianceList_SelectedIndexChanged(object sender, EventArgs e)
{
    Appliance selectedAppliance = (Appliance)cmbApplianceList.SelectedItem;
    MessageBox.Show(selectedAppliance.Info);
}

在这种情况下,一个消息框会显示Info所选设备的属性。

于 2012-12-03T21:50:19.270 回答
0

创建一个将所需值作为参数的新 Windows 窗体。

public partial class MyItemForm : Form
{
    public myItemForm(string item, double costs, int time, string picturepath)
    {
        InitializeComponent();
        label1.Text = item+ ": 1 Celsius Cost: $"+costs.ToString()+" Delivery: Within "+time.toString() +" hours."
        pictureBox1.ImageLocation = picturepath;
    }
}

表单只接受参数,将它们设置为 LabelText。图片路径也是如此。

总的来说,你必须做这样的事情:

    private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
       MyItemForm itemform = new MyItemForm(ComboBox1.Text, getCosts(ComboBox1.SelectedIndex), getTime(ComboBox1.SelectedIndex), getPicturePath(ComboBox1.SelectedIndex));
       itemform.Show();
    }

因此,每次用户更改 ComboBox 中的项目时,都会调用该事件。您必须自己弄清楚获取方法。

我希望它很清楚。

记住:这是一个例子!您必须自己找出正确的代码。

于 2012-12-03T21:44:50.257 回答