对于一个下拉列表框,要实现输出两个信息

.Net技术 码拜 9年前 (2015-03-27) 1145次浏览 0个评论
 

习题:设计一个“简单通讯录”程序,在窗体上建立一个下拉列表框、两个文本框和两个标签,实现如下功能:当用户在下拉式列表框中,选择一个学生姓名后,在“学生姓名”、“地址”两个文本框中分别显示出对应的姓名和地址。
窗体布局
                                下拉列表框
             学生姓名:
             地       址:
一、我的努力
       对于一个下拉列表框,要实现输出两个信息:姓名和地址,我想不出更好的方法来完成。我的思路是:再用一个下拉列表框,用于存放学生的地址,设置运行时隐藏。
      我的代码:
namespace 作业
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        private void Form2_Load(object sender, EventArgs e)
        {
            cbo_Namelist.Items.Add(“张无忌”);
            cbo_Namelist.Items.Add(“赵敏”);
            cbo_Namelist.Items.Add(“灭绝师太”);
            cbo_Namelist.Items.Add(“周芷若”);
            cbo_Namelist.Items.Add(“张三丰”);
            cbo_Namelist.SelectedIndex = 0;
        }
        private void cbo_Namelist_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (cbo_Namelist.SelectedIndex)
            {
                case 0:
                    cb_Address.Items.Clear();
                    cb_Address.Items.Add(“武当派”);
                    cb_Address.SelectedIndex = 0;
                    //显示姓名
                    this.txtb_Name.Text = cbo_Namelist.SelectedItem.ToString(); 
                    //显示地址
                    this.txtb_Address.Text = cb_Address.SelectedItem.ToString();
                    break;
                case 1:
                    cb_Address.Items.Clear();
                    cb_Address.Items.Add(“蒙古”);
                    cb_Address.SelectedIndex = 0;
                    this.txtb_Name.Text = cbo_Namelist.SelectedItem.ToString();
                    this.txtb_Address.Text = cb_Address.SelectedItem.ToString();
                    break;
                case 2:
                    cb_Address.Items.Clear();
                    cb_Address.Items.Add(“峨眉派”);
                    cb_Address.SelectedIndex = 0;
                    this.txtb_Name.Text = cbo_Namelist.SelectedItem.ToString();
                    this.txtb_Address.Text = cb_Address.SelectedItem.ToString();
                    break;
                case 3:
                    cb_Address.Items.Clear();
                    cb_Address.Items.Add(“峨眉派”);
                    cb_Address.SelectedIndex = 0;
                    this.txtb_Name.Text = cbo_Namelist.SelectedItem.ToString();
                    this.txtb_Address.Text = cb_Address.SelectedItem.ToString();
                    break;
                case 4:
                    cb_Address.Items.Clear();
                    cb_Address.Items.Add(“武当派”);
                    cb_Address.SelectedIndex = 0;
                    this.txtb_Name.Text = cbo_Namelist.SelectedItem.ToString();
                    this.txtb_Address.Text = cb_Address.SelectedItem.ToString();
                    break;
                default :
                    cb_Address.Items.Clear();
                    break;
            }
        }
    }
}
二、忽然想到
我想,一道题目不太可能出错。我这样自己增加一个下拉列表框来完成这样的题目,肯定不对。可是,我想不出其他方法。希望高手大侠不吝赐教。这道题目该怎么完成?

 
对于一个下拉列表框,要实现输出两个信息
后台定义个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();
        }
    }
}
再次感谢朋友们的帮助!

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明对于一个下拉列表框,要实现输出两个信息
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!