习题:设计一个“简单通讯录”程序,在窗体上建立一个下拉列表框、两个文本框和两个标签,实现如下功能:当用户在下拉式列表框中,选择一个学生姓名后,在“学生姓名”、“地址”两个文本框中分别显示出对应的姓名和地址。 |
|
后台定义个datatable存放姓名和地址,下拉列表绑定datatable,text绑定姓名,value绑定地址
然后选择一项后,分别取出text和selectedValue就行了 |
|
你也可以用字典Dictionary<string,string>来存放姓名和地址
然后根据选择的姓名,去字典里取出对应的地址 或者二维数组,都行 总之你必须有个结构来存数据,这个结构不一定是控件,而且也不应该是控件 |
|
12分 |
或者你图省事,不用二维数组,用两个一维数组string[]来分别存放姓名和地址也是可以的
选择一项后,取出SelectedIndex就是数组的索引 |
5分 |
通讯录联系人数量理论是无限的,你难道要无限添加case1,case2,case3,case4…..?
/div> |
如果按你原来的想法,全用switch,case判断,这些字符串直接写死在代码里就得了,根本不需要任何结构来存放它
|
|
5分 |
我认为这是一个设计上的问题,仔细思考下如何存储这些数据比较合适,不要过于纠结控件怎么用,那些只是一个表现形式而已
|
5分 |
声明一个类 包含姓名和地址,赋值并添加到list集合,绑定到cbo的DataSource(msdn上有实例);
在selectedIndexChanged事件中 获取 SelectedItem ,在转换成你定义的类,把类的属性赋值给textbox控件。就这么简单,不用搞的那么费劲 |
后台数据集可以像7楼所说的那样,是个实体类
新手的话,你还是用数组可能会更好理解一些 总之就是数据归数据, 显示归显示 数据在后台存放可以有很多种形式 但是不能老把数据放控件里,把控件当数据库用 |
|
3分 |
winform,直接把数据源在类里面private个字段放着,在下拉列表的事件中去数据源中找对应的数据不就行了
|
我用数组完成了这道题目。代码如下:
namespace 作业 { public partial class Form2 : Form { public Form2() { InitializeComponent(); } string[] strName = new string[] { “张无忌”, “赵敏”, “灭绝师太”, “周芷若”, “张三丰” }; string[] strAddress = new string[] { “武当派”, “蒙古”, “峨眉派”, “峨眉派”, “武当派” }; private void Form2_Load(object sender, EventArgs e) { cbo_Namelist.Items.Clear(); for(int i=0;i<strName .Length -1;i++) { cbo_Namelist .Items.Add (strName [i]); } cbo_Namelist.SelectedIndex = 0; } private void cbo_Namelist_SelectedIndexChanged(object sender, EventArgs e) { //显示姓名 this.txtb_Name .Text =strName [cbo_Namelist .SelectedIndex ].ToString (); //显示地址 this.txtb_Address.Text = strAddress[cbo_Namelist.SelectedIndex].ToString(); } } } 再次感谢朋友们的帮助! |