[英]How to change picture in picturebox according to value in combobox
[英]Change combobox value according to another combobox value?
我对C#和WPF项目有点陌生。 所以这是我的问题。
我有2个组合框,其中包含字符串列表。
根据我的第一个组合框的值,我想更改第二个组合框中的可用列表。
这是我的代码:
public partial class MainWindow : Window
{
//creation de listes
List<string> themesE17 = new List<string>();
List<string> themesH17 = new List<string>();
List<string> themesE16 = new List<string>();
List<string> themesH16 = new List<string>();
public MainWindow()
{
InitializeComponent();
initLists();
string value = comboSaison.Text;
Console.WriteLine("The value of season combobox " + value);
}
public void initLists()
{
//saison 2017
themesE17.Add("Ete 17 Theme1");
themesE17.Add("Ete 17 Theme2");
themesH17.Add("Hiver 17 Theme1");
themesH17.Add("Hiver 17 Theme2");
//saison 2016
themesE16.Add("Ete 16 Theme1");
themesE16.Add("Ete 16 Theme2");
themesH16.Add("Hiver 16 Theme1");
themesH16.Add("Hiver 16 Theme2");
}
private void comboSaison_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (comboSaison.Text == "Ete 2017")
{
comboTheme.ItemsSource = themesE17;
Console.WriteLine("1st if E17");
}
else if (comboSaison.Text == "Hiver 2017")
{
comboTheme.ItemsSource = themesH17;
Console.WriteLine("2nd if H17");
}
else if (comboSaison.Text == "Ete 2016")
{
comboTheme.ItemsSource = themesE16;
Console.WriteLine("3rd if E16");
}
else if (comboSaison.Text == "Hiver 2016")
{
comboTheme.ItemsSource = themesH16;
Console.WriteLine("4th if H16");
} else
Console.WriteLine("Error in selection !");
}
}
但这是行不通的,我的Console.WriteLine
向我显示,当我在第一个组合框中选择值时,程序在所有情况下都会以随机方式运行。
帮助将不胜感激,谢谢!
ComboBox有物品。 因此,只需找到所选内容及其标题即可。
private void comboSaison_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var obj = (ComboBox)sender;
var ind = obj.SelectedIndex;
var selectedItem = (ComboBoxItem)obj.Items[ind];
switch ((string)selectedItem.Content)
{
case "Ete 2017":
comboTheme.Items.Clear();
foreach (var item in themesE17)
comboTheme.Items.Add(new ComboBoxItem() { Content = item });
break;
case "Hiver 2017":
comboTheme.Items.Clear();
foreach (var item in themesH17)
comboTheme.Items.Add(new ComboBoxItem() { Content = item });
break;
case "Ete 2016":
comboTheme.Items.Clear();
foreach (var item in themesE16)
comboTheme.Items.Add(new ComboBoxItem() { Content = item });
break;
case "Hiver 2016":
comboTheme.Items.Clear();
foreach (var item in themesH16)
comboTheme.Items.Add(new ComboBoxItem() { Content = item });
break;
default:
break;
}
}
另外,最好将switch(text)更改为switch(index),以防止单词中的大小写不匹配和类型错误。
PS对不起我的英语
注意:这用于WPF,不适用于WinForm解决方案
只需通过ObservableCollection<string>
更改所有List<string>
ObservableCollection<string>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.