2009-08-02 10 views
2

Id、Name列のコンボボックスがあります。私はこれらの値をデータボックス付きのコンボボックスに追加しました:C#Winform:コンボボックスのValueMemberプロパティをlongに変換する

 DataTable.Rows.Add(1, "Name1"); 
     DataTable.Rows.Add(2, "Name2"); 

Idカラムは長い必要があります。

long id; 
id = this.comboBox1.ValueMember; 

それをする方法:私はID値を取得しようとしたときしかし、それは長くに変換することはできませんと言いますか?

ありがとうございました。ほとんどそこ


@BlueMonkMNが、私は(上記の私のデータテーブルの値から)MessageBox.Showプリント1を試してみました

 MessageBox.Show(comboBox1.SelectedValue.ToString()); 

が、このライン

id = (long)(comboBox1.SelectedValue); 

キャスト例外をスローしたとき?

なぜ1に変換できないのですか?

+0

ValueMemberプロパティについて知っていますか? – adatapost

答えて

3

まず、長い整数が必要なものであることを確認してください。通常の整数(int)は、DataTableでSystemn.Int32として指定され、一般的には32ビットオペレーティングシステムで最適です。この整数の範囲は-2,147,483,648〜2,147,483,647です。実際にはそれよりも大きな整数が必要な場合は、DataTableでSystem.Int64を使用してコードを長くしてください。

次に、コンボボックスの間違ったプロパティにアクセスしようとしています。 SelectedValueプロパティにアクセスする必要があります。 ValueMemberは、バインドされたオブジェクトのどの列/プロパティがSelectedValueプロパティによって公開されるかを決定するプロパティです。ここで

は、コンボボックスを構成する方法を約示すいくつかのコードです: (のInitializeComponentから生成されたコード)

 this.dataTable1BindingSource = new System.Windows.Forms.BindingSource(this.components); 
    this.dataSet11 = new WindowsFormsApplication1.DataSet1(); 
    // 
    // comboBox1 
    // 
    this.comboBox1.DataSource = this.dataTable1BindingSource; 
    this.comboBox1.DisplayMember = "Name"; 
    this.comboBox1.ValueMember = "id"; 
    // 
    // dataTable1BindingSource 
    // 
    this.dataTable1BindingSource.DataMember = "DataTable1"; 
    this.dataTable1BindingSource.DataSource = this.dataSet11; 

そして、ここであなたがでた場合、コンボボックスから選択した値を取得する方法を示すいくつかのコードですあなたはidは長整数になりたいこと:

 long id = (long)(comboBox1.SelectedValue); 
1

ValueMemberでは、プロパティdatatpye文字列であり、それは、列の名前を表します。 OPはSelectedValueプロパティを使用する必要があります。

+0

私は間違いを犯しましたが、選択された値であっても、私は長い間変換できません。 – programmernovice

+0

使用、 長いp = long.Parse(comboBox1.SelectedValue.ToString()); – adatapost

関連する問題