关于在组合框中链接字符串以输出数据

时间:2012-12-03 21:29:12

标签: c# winforms visual-studio c#-4.0 combobox

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

例如,Whirlpool的冰箱可以冷却到1摄氏度,价格为400美元,并在24小时内送达。

因此,一旦有人在组合框中单击“Whirlpool Fridge”,它就会在表单标签/文本框中弹出

制造商:惠而浦 最大冷却:1摄氏度 费用:400美元 交货期:24小时内

另外,我试图找到是否可以在图片框中显示冰箱的图片。然而,我没有遇到过这方面的解决方案。

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

注意:如果您要将我链接到某个网站,我会很感激,如果您至少可以解释如何做到这一点,或者对于喜欢勺子喂食勺的其他人,只需将其粘贴起来即可我会搞清楚的。再次感谢你! <:d

编辑:

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

2 个答案:

答案 0 :(得分: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属性。

答案 1 :(得分: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中的Item时,都会调用该事件。 你必须自己弄清楚get方法。

我希望它很清楚。

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