C# comboBox mit comboBox ändern

Gotenks666

Ensign
Registriert
Mai 2009
Beiträge
165
Guten Abend liebe Community

Ich habe ein kleines Problem, und habe schon den ganzen Tag versucht die Lösung in google zu finden, doch leider ohne erfolg.

Ich versuche mit einer comboBox1 eine comboBox2 zu ändern.
Zur verständigung mal meinen Code:

Code:
MySqlConnection myconn = new MySqlConnection("host=****;user=a***;password=***;database=***;");
            MySqlDataAdapter sqlgender = new MySqlDataAdapter("SELECT * FROM animelist ", myconn);
            DataTable dtgen = new DataTable("Anime");
            sqlgender.Fill(dtgen);
            comboBox1.DataSource = dtgen;
            comboBox1.ValueMember = dtgen.Columns[0].ColumnName;
            comboBox1.DisplayMember = dtgen.Columns[1].ColumnName;
Meine comboBox1 wird mit daten aus meiner Datenbank gefüllt.

Meine comboBox2 wird genauso aus daten durch meine Datenbank gefüllt doch!
Code:
 MySqlConnection myconn = new MySqlConnection("host=****;user=a***;password=***;database=***;");
           [COLOR="Red"] MySqlDataAdapter sqlgender1 = new MySqlDataAdapter("SELECT * FROM " +comboBox1.Text + " WHERE episode",episode);[/COLOR]
            DataTable dtgen1 = new DataTable("");
            sqlgender1.Fill(dtgen1);
            comboBox2.DataSource = dtgen1;
            comboBox2.ValueMember = dtgen1.Columns[0].ColumnName;
            comboBox2.DisplayMember = dtgen1.Columns[1].ColumnName;
Meine 2te comboBox wie ihr seht in dem roten Text ist abhänig von dem "input" der ersten Combobox.

Doch meine Frage istjetzt wie ich es schaffe, wenn ich den Wert der ersten comboBox ändere, dass sich die 2te comboBox automatisch mitändert.

Ich dachte da eher an eine if abfrage
like this:

Code:
if (comboBox1.TextChanged)
            { 
               combobox2.Text change etc.. keine Ahnung da hängt es..
}

Ich hoffe ihr könnt mir helfen!

Danke im vorraus!
 
Hab mir das mal durchgelesen, doch das hilft mir bei meiner abfrage nicht weiter :/
 
Probier mal:

Code:
this.comboBox1.SelectionChanged += new SelectionChangedEventHandler(OnMyComboBoxChanged);

...
private void OnMyComboBoxChanged(object sender, SelectionChangedEventArgs e)
{
            MySqlConnection myconn = new MySqlConnection("host=****;user=a***;password=***;database=***;");
            MySqlDataAdapter sqlgender1 = new MySqlDataAdapter("SELECT * FROM " +comboBox1.Text + " WHERE episode",episode);
            DataTable dtgen1 = new DataTable("");
            sqlgender1.Fill(dtgen1);
            comboBox2.DataSource = dtgen1;
            comboBox2.ValueMember = dtgen1.Columns[0].ColumnName;
            comboBox2.DisplayMember = dtgen1.Columns[1].ColumnName;
}

Wobei du
Code:
this.comboBox1.SelectionChanged += new SelectionChangedEventHandler(OnMyComboBoxChanged);
z.B. im Konstruktor aufrufst.
 
Wie soll das per if funktionieren?
Du musst mit Events arbeiten, da die Comboboxen ja vom Benutzer zu beliebiger Zeit verändert werden kann.
 
In wie fern Fehlanzeige? Ich nehme mal, du machst etwas falsch ;-) Was genau klappt nicht?

Wenn du das probierst:

Code:
private void OnMyComboBoxChanged(object sender, SelectionChangedEventArgs e)
{
            this.comboBox2.Items.Add(new ComboBoxItem() { Content = "New Item" });
            this.comboBox2.SelectedIndex = 0;
}

Nachdem du in deiner ComboBox1 ein anderes Items selektiert hast, sollte in deiner ComboBox2 das "New Item"-Item hinzugefügt und selektiert werden.

Kurzer Nachtrag:
Gehen wir davon aus, du hast die MainWindow.xaml. In der Code-Behind steht folgendes:

Code:
 public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            this.comboBox1.SelectionChanged += comboBox1_SelectionChanged;
        }

        private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            this.comboBox2.Items.Add(new ComboBoxItem() { Content = "New Item" });
            this.comboBox2.SelectedIndex = 0;
        }
    }

In der XAML:

Code:
<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="152" Width="170">
    <Grid>
        <ComboBox Height="23" HorizontalAlignment="Left" Margin="12,12,0,0" Name="comboBox1" VerticalAlignment="Top" Width="120">
            <ComboBoxItem Content="1" />
            <ComboBoxItem Content="2" />
        </ComboBox>
        <ComboBox Height="23" HorizontalAlignment="Left" Margin="12,41,0,0" Name="comboBox2" VerticalAlignment="Top" Width="120" />
    </Grid>
</Window>
Ergänzung ()

Ach ja, versuche mal bitte statt

Code:
private void OnMyComboBoxChanged(object sender, SelectionChangedEventArgs e)
{
            MySqlConnection myconn = new MySqlConnection("host=****;user=a***;password=***;database=***;");
            [B]MySqlDataAdapter sqlgender1 = new MySqlDataAdapter("SELECT * FROM " +comboBox1.Text + " WHERE episode",episode);[/B]
            DataTable dtgen1 = new DataTable("");
            sqlgender1.Fill(dtgen1);
            comboBox2.DataSource = dtgen1;
            comboBox2.ValueMember = dtgen1.Columns[0].ColumnName;
            comboBox2.DisplayMember = dtgen1.Columns[1].ColumnName;
}

D.h. du benutzt statt

Code:
comboBox.Text

Code:
(this.comboBox1.SelectedItem as ComboBoxItem).Content


Code:
 private void OnMyComboBoxChanged(object sender, SelectionChangedEventArgs e)
{
            MySqlConnection myconn = new MySqlConnection("host=****;user=a***;password=***;database=***;");
            [B]MySqlDataAdapter sqlgender1 = new MySqlDataAdapter("SELECT * FROM " + (this.comboBox1.SelectedItem as ComboBoxItem).Content + " WHERE episode",episode);[/B]
            DataTable dtgen1 = new DataTable("");
            sqlgender1.Fill(dtgen1);
            comboBox2.DataSource = dtgen1;
            comboBox2.ValueMember = dtgen1.Columns[0].ColumnName;
            comboBox2.DisplayMember = dtgen1.Columns[1].ColumnName;
}
 
Zuletzt bearbeitet:
Danke für die hilfe. Ich benutze Windows Forms und nicht WPF.

Als fehler bei deinen Code zeigt er mir an : ComboBoxItem ist im aktuellen kontext... etc
 
Ok, ich bin davon ausgegangen, dass du WPF benutzt. Probier für Windows Forms folgendes:

Code:
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.comboBox1.SelectedIndexChanged += comboBox1_SelectedIndexChanged;
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
             MySqlConnection myconn = new MySqlConnection("host=****;user=a***;password=***;database=***;");
            MySqlDataAdapter sqlgender1 = new MySqlDataAdapter("SELECT * FROM " +comboBox1.Text + " WHERE episode",episode);
            DataTable dtgen1 = new DataTable("");
            sqlgender1.Fill(dtgen1);
            comboBox2.DataSource = dtgen1;
            comboBox2.ValueMember = dtgen1.Columns[0].ColumnName;
            comboBox2.DisplayMember = dtgen1.Columns[1].ColumnName;
        }
    }

Vergiss, was ich vorher mit dem ComboBoxItem gesagt habe, gilt nur für WPF.
 
Ich danke dir vielmals, das hat wunderbar funktioniert. Darauf hätte ich eigentlich auch alleine kommen können :/..

Nochmals Danke für die Hilfe :)!

~Kann geclosed werden
 
Zurück
Oben