2016-03-21 2 views
0

ich einige Tabellen haben, ist Entity Framework 6. Mein Ziel mit dem Klassen tabelle1 ComboBox Wert MitgliedC# Combobox Doppeldatabinding - wählen Sie den Punkt basierend auf EntityFramework Wert

ComboBox Datasource zu binden:

ComboBoxBasicDB[] statType = new ComboBoxBasicDB[] { 
      new ComboBoxBasicDB { Text = "A1", Value = 0 }, 
      new ComboBoxBasicDB { Text = "A2", Value = 1 }, 
      new ComboBoxBasicDB { Text = "A3", Value = 2 }, 
      new ComboBoxBasicDB { Text = "A4", Value = 4 }, 
      new ComboBoxBasicDB { Text = "B12", Value = 12 }, 
      new ComboBoxBasicDB { Text = "B13", Value = 13 }, 
      new ComboBoxBasicDB { Text = "B14", Value = 14 } 
     }; 

statBS.DataSource = statType; // statBS == BindingSource, configured throught VS designer, comboBox.DataSource = statBS, comboBox.ValueMember = Value, comboBox.DisplayMember = Text 

table1 enthält die Eigenschaft ex. Value1, die eine davon enthält (0, 1, 2, 4, 12, 13, 14)

Was versuche ich zu tun ist, von der DB Reihe zu laden und so etwas wie diese auf TextBox verwenden:

textBox.DataBindings.Add("Text", binding, "Name"); 

die perfekt

funktioniert habe ich versucht, so etwas wie dieses:

comboBox.DataBindings.Add("SelectedValue", binding, "Value1"); 

aber es nicht funktioniert, wird nichts nach Abfrage ausgewählt. textBox binden erfolgreich

I verwendet SelectedIndex aber es ein Problem wird, und das ist Wert über 7, weil es 7 Artikel in statType nicht 14.

Ich hoffe, Sie verstehen, was ich bin versucht zu tun:/ Ich dachte, ich könnte das durch ComboBox.DataManager tun, aber seine private

Vielen Dank für jede Idee.

+0

Haben Sie versucht, [diese Antwort aus SO] (http://StackOverflow.com/a/10015963/4677585) – wonderbell

+0

wie ich schon sagte, ich habe es versucht: ComboBox.DataBindings.Add ("SelectedValue", Bindung, "Value1"); funktioniert nicht:/ Auch wenn ich es mit Button-Aktion als ComboBox.SelectedValue = 14 versuchen; – user1085907

Antwort

0

So ist Lösung individuelle Implementierung in den genannten Databindings SelectedValue ändern

Implementierung SelectedItemValue:

public class ComboBoxBasic : ComboBox 
{ 
    bool diffTextColor = false; 

    public ComboBoxBasic() 
    { 

    } 

    public object SelectedItemValue 
    { 
     get 
     { 
      return (SelectedItem as ComboBoxBasicDB).Value; 
     } 

     set 
     { 
      for(int i = 0; i < Items.Count; i++) 
      { 
       ComboBoxBasicDB item = Items[i] as ComboBoxBasicDB; 

       if(item.Value.ToString() == value.ToString()) 
       { 
        SelectedIndex = i; 

        break; 
       } 
      } 
     } 
    } 

    public bool DifferentTextColor 
    { 
     get { return diffTextColor; } 

     set 
     { 
      diffTextColor = value; 

      if (diffTextColor) 
      { 
       DrawItem += ComboBoxBasic_DrawItem; 
       DrawMode = DrawMode.OwnerDrawFixed; 
      } 
      else 
       DrawItem -= ComboBoxBasic_DrawItem; 
     } 
    } 

    void ComboBoxBasic_DrawItem(object sender, DrawItemEventArgs e) 
    { 
     e.DrawBackground(); 

     if (e.State == DrawItemState.Focus) 
      e.DrawFocusRectangle(); 

     Brush brush = new SolidBrush((sender as Control).ForeColor); 

     ComboBoxBasicDB item = (sender as ComboBoxBasic).Items[e.Index] as ComboBoxBasicDB; 

     if (item.ForeColor != Brushes.Black) 
      brush = item.ForeColor; 

     e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit; 
     e.Graphics.DrawString(item.Text, (sender as Control).Font, brush, e.Bounds.X, e.Bounds.Y); 
    } 
} 

Auch gibt es individuelle DrawItem wenn sein aktiviert durch DifferentTextColor

Verwandte Themen