我在C#工作,并且我已经满足了这些标准:
使用以下功能实现GUI(Windows Form Application)占星应用程序:
提示:在运行时使用集合绑定数据。
显示所有标志的组合框
使用所选符号
更新图像控件包含所选符号的所有预测的列表框
用户界面为给定的符号添加预测并刷新列表
我能够让组合框填充我选择这样做的标志:
private void Form1_Load(object sender, EventArgs e)
{
DataTable Horoscope = new DataTable();
DataColumn dc1 = new DataColumn("Sign");
// DataColumn dc2 = new DataColumn("Reading");
Horoscope.Columns.Add(dc1);
// Horoscope.Columns.Add(dc2);
Horoscope.Rows.Add("Libra");
Horoscope.Rows.Add("Leo");
Horoscope.Rows.Add("Virgo");
Horoscope.Rows.Add("Scorpio");
cmbHoro.DataSource = Horoscope;
cmbHoro.DisplayMember = "Sign";
}
我的问题是如何指定让每个符号说3个不同的读数,然后根据用户在组合框中选择一个符号显示三个读数之一?
答案 0 :(得分:0)
您使用了DataTable
,我在这里使用Dictionary
作为答案。
你也可以使用DataTable
,然后你需要相应地建立列和关系。
这个答案的主要动机是向您展示如何动态更改listbox
选择combobox
的条目
这里有一个包含星座相关数据的类:HoroscopeData
public class HoroscopeData
{
public string sign;
public List<string> prediction;
public HoroscopeData(string sign)
{
this.sign = sign;
this.prediction = GetPredictionForSign(sign);
}
private List<string> GetPredictionForSign(string sign)
{
List<string> predition = new List<string>();
for (int i = 0; i < 3; i++)
predition.Add("Prediction of " + sign + " " + i.ToString());
return predition;
}
}
我们的数据结构是
public Dictionary<int, HoroscopeData> Horoscope = new Dictionary<int, HoroscopeData>();
所以我们的代码看起来像,
public partial class Form1 : Form
{
public Dictionary<int, HoroscopeData> Horoscope = new Dictionary<int, HoroscopeData>();
public Form1()
{
InitializeComponent();
Horoscope.Add(1, new HoroscopeData("Aris"));
Horoscope.Add(2, new HoroscopeData("Libra"));
Horoscope.Add(3, new HoroscopeData("Leo"));
//adding items in combobox, with tag which is associated with our main data
// so we can easily fetch prediction out of it whenever selection changes
foreach(int tag in Horoscope.Keys)
{
CmbItem item = new CmbItem(Horoscope[tag].sign, tag);
comboBox1.Items.Add(item);
}
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
//here on combobox selection, we are fetching predictions of selected sign
// and add them in listbox
CmbItem selectedItem = (CmbItem)(((ComboBox)sender).SelectedItem);
List<string> predictions = Horoscope[selectedItem.tag].prediction;
listBox1.Items.Clear();
foreach (string pre in predictions)
listBox1.Items.Add(pre);
}
}