2 Stimmen

C# Winform: Convert Combobox ValueMember Eigenschaft zu lang

Ich habe eine Combobox mit den Spalten Id und Name. Ich habe diese Werte der Combobox mit Datentabelle hinzugefügt:

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

Id-Spalte sollte eine lange sein. Als ich jedoch versuchte, den Id-Wert zu erhalten, heißt es, dass er nicht in einen Long-Wert konvertiert werden kann:

long id;
id = this.comboBox1.ValueMember;

Wie kann man das tun?

Danke.


@BlueMonkMN, fast da, aber wenn ich versucht, MessageBox.Show druckt 1 (aus meiner datatable Werte oben)

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

aber diese Zeile

    id = (long)(comboBox1.SelectedValue);

löst eine Cast-Ausnahme aus ?

Warum kann 1 nicht in long umgewandelt werden?

0 Stimmen

Kennen Sie die Eigenschaft ValueMember?

3voto

BlueMonkMN Punkte 24177

Vergewissern Sie sich zunächst, dass Sie eine lange Ganzzahl benötigen. Eine normale Ganzzahl (int) wird in der Datentabelle als Systemn.Int32 angegeben und funktioniert im Allgemeinen am besten auf 32-Bit-Betriebssystemen. Der Bereich dieser Ganzzahl liegt zwischen -2.147.483.648 und 2.147.483.647. Wenn Sie tatsächlich größere Ganzzahlen benötigen, verwenden Sie System.Int64 in der DataTable und long in Ihrem Code.

Als nächstes versuchen Sie, auf die falsche Eigenschaft des Kombinationsfeldes zuzugreifen. Sie müssen auf die Eigenschaft SelectedValue zugreifen. ValueMember ist die Eigenschaft, die bestimmt, welche Spalte/Eigenschaft des gebundenen Objekts durch die SelectedValue-Eigenschaft angezeigt wird.

Der folgende Code zeigt, wie das Kombinationsfeld ungefähr konfiguriert werden sollte: (Generierter Code aus 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;

Der folgende Code veranschaulicht, wie Sie den ausgewählten Wert aus dem Kombinationsfeld abrufen, wenn die ID eine lange Ganzzahl sein soll:

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

1voto

KV Prajapati Punkte 91877

ValueMember ist eine String-Dateneigenschaft und stellt den Namen einer Spalte dar. OP muss die Eigenschaft SelectedValue verwenden.

0 Stimmen

Danke, ich habe einen Fehler gemacht, aber auch mit selectedvalue kann ich nicht in long konvertieren.

0 Stimmen

Use, long p = long.Parse(comboBox1.SelectedValue.ToString());

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X