0

Visual Studio にコンボ ボックスがあり、コンボ ボックス内の文字列を編集して 5 つのアイテムを表示しました。オンラインで、アイテムの 1 つをクリックすると、そのアイテムに関する情報が表示される方法を確認しようとしました。(ただし、項目がクリックされない場合は、フォームを空白のままにします)

たとえば、Whirlpool の冷蔵庫は摂氏 1 度まで冷やすことができ、400 ドルで 24 時間以内に配達されます。

したがって、コンボボックスで「Whirlpool Fridge」をクリックすると、フォームのラベル/テキストボックスにこれが表示されます。

メーカー: Whirlpool 最大冷却: 1 摂氏 費用: $400 配送: 24 時間以内

また、冷蔵庫の写真をピクチャーボックスに表示できるかどうかを調べてみました。しかし、私はこれに対する解決策に出くわしていません。

この質問であなたを退屈させて申し訳ありません!

注: 私をサイトにリンクする場合は、少なくともその方法を説明していただければ幸いです。または、スプーン フィーディング スプーンが好きな人は、それを貼り付けてください。それを出します。ありがとうございました!<:D

編集:

Windows フォーム アプリケーションを使用しています

4

2 に答える 2

2

これをより簡単にする 1 つの方法は、データ バインディングを使用することです。

アプライアンス オブジェクトがあるとします。

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 のアイテムを変更するたびに、イベントが呼び出されます。get-method を自分で理解する必要があります。

でも、それが明確であることを願っています。

覚えておいてください: これは一例です! 適切なコードを自分で見つけ出す必要があります。

于 2012-12-03T21:44:50.257 に答える