2014-12-31 9 views
6

する私は、それぞれの値が値とラベルを持つことができますダウンメニュー簡単なドロップを作成しようとしていますVisual Studioの/リサイズ/ C#どのようにリサイズでドロップダウンメニューを作成し、C#

を使用してに新しいです。

これは、私がWebアプリケーションを作成していた場合、私はHTMLでどうなるのかです。しかし、C#とWinFormsでこれをどうやって行うことができますか?

<select> 
<option value="0">Please select One</option> 
<option value="1">The first Options</option> 
<option value="2">The Second Options</option> 
<option value="3">The Third Options</option> 
</select> 

私はコンボボックスを試してみましたが、私が値とラベルを追加することは許されないのですし、ユーザーはまだ彼らが望むものを入力することができそうです。

私は、ListBoxコントロールを試みたが、それは私が同様に値とラベルを使用することはできませんでした。

+0

あなたのタイトルと説明が混乱しています。これはメニューとは関係ありません。 –

+0

あなたが表示したい文字列でアイテムを塗りつぶすのが最も良い方法です。コード内では、ユーザが選択したものに基づいた条件があります。 – Baddack

答えて

10

あなたが値とキャプション(ラベル)をしたい場合は、あなたがしてIDTextValueMemberプロパティにDisplayMemberプロパティを設定するコンボボックスで

class ComboItem 
{ 
    public int ID { get; set; } 
    public string Text { get; set; } 
} 

適切なクラスを作成します。


ComboBoxのDropDownStyleは、その動作を決定します。 DropDownStyle.DropDownを使用すると、ユーザーはテキストを入力できます。 DropDownStyle.DropDownListを持つユーザーは、唯一のリストから項目を選択することができます。


あなたはこのようComboBoxを埋めることができます。DataSourceは可算のあらゆる種類のことができ

myCombo.DataSource = new ComboItem[] { 
    new ComboItem{ ID = 1, Text = "One" }, 
    new ComboItem{ ID = 2, Text = "Two" }, 
    new ComboItem{ ID = 3, Text = "Three" } 
}; 

あなたはコンボボックスに項目のいずれかのタイプを追加することができ、この

int id = (int)myComboBox.SelectedValue; 

ノートのような選択されたIDを取得することができます。あなたはDisplayMemberValueMemberプロパティを指定しない場合、コンボボックスが表示され、あなたがSelectedItemプロパティを介して、選択した項目(選択されていない値)を取得することができ、テキストを決定するために、オブジェクトのToString方法を使用しています。

あなたがこのタイプのオブジェクトを追加する場合...

class Person 
{ 
    public int PersonID { get; set } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 

    public override string ToString() 
    { 
     return FirstName + " " + LastName; 
    } 
} 

...コンボボックスに、コンボボックスが最初に表示されます。この

Person selectedPerson = (Person)myComboBox.SelectedItem; 
int personID = selectedPerson.PersonID; 

のように選択した項目を取得することができますし、人の姓。

+0

ありがとうございました。あなたのコードを適用した後、私はそれが私の作品次のテキストオプション '「POS.ComboItem」' 'POS'は、私が見るべき名前空間である'「ワン」、「2」、「三」 ' – Jaylen

+0

と3のオプションを見ています。 'ToString'をオーバーライドするか、' DisplayMember'プロパティを定義してください。私は 'comboBox1.DisplayMember =" Text "と書いた。 \t \t \t comboBox1.ValueMember =「ID」; '、しかし、あなたは同様にプロパティウィンドウでこれらのプロパティを設定することができます。 –

+0

それは今働いた:)あなたに私が選択した項目を設定するにはどうすればよいそんなに – Jaylen

0

ComboBoxはToString呼び出しの結果を表示するので、値をラップしてテキストを表示してコンボボックスに追加するDisplayクラスを定義できます。

です:

public class ItemDisplay<TValue> 
{ 
    private readonly string m_displayText; 

    public ItemDisplay(TValue value, String displayText) 
    { 
     this.Value = value; 
     m_displayText = displayText; 
    } 

    public TValue Value { get; set; } 

    public override string ToString() 
    { 
     return m_displayText; 
    } 
} 

と次のようにコンボボックスに項目を追加します。

comboBox1.Items.Add(new ItemDisplay<int>(1, "FirstValue")); 
comboBox1.Items.Add(new ItemDisplay<int>(2, "Second")); 
comboBox1.Items.Add(new ItemDisplay<int>(3, "Third")); 
3

値は、正しい選択されている項目にちょうど参照であるように思え?その後、あなたは、コンボボックスのインデックスを使用することができます、それはずっと簡単になります。

ないはい、そしてちょうど、デザイナーでコンボボックスのプロパティを追加した場合、あなたの項目は、ビルドの前に知られているか確認します。

 List<string> items = new List<string>() { "item1", "item2" }; 
     comboBox1.DataSource = items; 

そして、選択されたどのような項目を知っている:いない場合は、あなただけやっによって動的に追加することができ

あなたのコンボボックスのためのデータソースを設定する必要が
 int index = comboBox1.SelectedIndex; 
+0

が実は、私は値がラインアイテムidで、テキストは、データベースから読み込ん名項目であるデータベースから値を読んでいますありがとう – Jaylen

2

、それはあなたが作成した場合はましですクラスとは、たとえば、オブジェクトのリストを渡します

private void Init() 
{ 
    List<Item> items = new List<Item>(); 
    items.Add(new Item() { Text = "displayText1", Value = "ValueText1" }); 
    items.Add(new Item() { Text = "displayText2", Value = "ValueText2" }); 
    items.Add(new Item() { Text = "displayText3", Value = "ValueText3" }); 

    comboBox1.DataSource = items; 
    comboBox1.DisplayMember = "Text"; 
    comboBox1.ValueMember = "Value"; 

} 

public class Item 
{ 
    public Item() { } 

    public string Value { set; get; } 
    public string Text { set; get; } 
} 

があなたのFormName_Load(object sender, EventArgs e){}Init()方法を入れてください。 GETメソッドでselectlistitemを使用するコントローラのドロップダウンを作成するため

0

。 同じ方法でポストする必要もあります。

  List<SelectListItem> items = new List<SelectListItem>(); 
      items.Add(new SelectListItem 
      { 
       Text = "car", 
       Value = "car" 
      }); 


      ViewBag.List = new SelectList(items, "Text", "Value"); 

ビューでは、ドロップダウンリストを渡す必要があります。

@Html.DropDownList("option", (ViewBag.List as SelectList), "Select", new { @style ="padding:5.5px;margin-bottom:8px;margin-right:-5px;" }) 

`

関連する問題