标题:关于windows窗体应用程序的结构 问题在代码后面
只看楼主
伍则帝
Rank: 3Rank: 3
来 自:四川省南充市高坪区
等 级:论坛游民
威 望:6
帖 子:100
专家分:34
注 册:2013-3-16
结帖率:84%
已结贴  问题点数:9 回复次数:3 
关于windows窗体应用程序的结构 问题在代码后面
namespace demo3_1
{
    struct user//声明结构型
    {
        public string username;//声明结构型的数据成员
        public string pwd;
    }
    public partial class Minform : Form
    {
        user[] myUsers;
        public Minform()//声明结构型的方法成员
        {
            InitializeComponent();
            InitUser();// 初始化用户信息
        }

        /// <summary>
        /// 初始化用户信息
        /// </summary>
        private void InitUser()
        {
            myUsers = new user[3];
            user u1, u2, u3;
            u1.username = "zhang";
            u1.pwd = "123456";
            myUsers[0] = u1;

            u2.username = "li";
            u2.pwd = "123456";
            myUsers[1] = u2;

            u3.username = "wang";
            u3.pwd = "123456";
            myUsers[2] = u3;
        }

        private bool checkUser(string username, string pwd)
        {
            bool flag = false;
            foreach (user u in myUsers)
            {
                if (u.pwd == pwd && u.username == username)
                {
                    flag = true;
                    break;
                }
            }
            return flag;
        
        }
        private void bt_login_Click(object sender, EventArgs e)
        {
            string userName = tb_userName.Text;
            string pwd = tb_pwd.Text;
            if (checkUser(userName,pwd)==true)
                MessageBox.Show("登录成功");
            else
            {
                MessageBox.Show("密码或用户名有误");
                tb_pwd.Clear();
                tb_userName.Clear();
            }
        }
        private void bt_scan_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void tb_pwd_TextChanged(object sender, EventArgs e)
        {

        }
     }
  }
不懂的有点多哟!
    1     user[] myUsers;//这是声明的数组吗?为什么要在 public partial class Minform : Form里面声明?
    2    public Minform()//这是声明结构型的方法成员吗?为什么要在 public partial class Minform : Form里面声明?
    3    InitUser();// 它的用法是Init加结构名User吗?为什么在public Minform()里面?
     4    private bool checkUser(string username, string pwd)//这句是不是敲出来的,还是像
                  private void tb_pwd_TextChanged(object sender, EventArgs e)      
                { }
         双击出来的?
     5          foreach (user u in myUsers)//这个语句是什么意思?
     6           if (checkUser(userName,pwd)==true)//这个语句是什么意思?
       其实1,2,3句我就是想知道他们所放位置有什么规则没?因为我才学这个,对它的规则和意思不是很明白,所以还望大家不吝赐教。
搜索更多相关主题的帖子: 声明 应用程序 private public 
2013-03-23 22:15
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
得分:9 
算我先前那贴忘记给你强调一点, 任意名称+小括号 这是一个方法,换个说法叫函数,方法的名称自己取的,想怎么命名都可以,当然一般来说方法名都会取得让人能够明白这个方法是做什么的.记得是 任意名称+小括号, 不是 关键字+括号 袄,例如 if() foreach()这种不是的啊,因为if,foreach是关键字,如果小括号里面有东西,那么这一个或多个东西,就是这个方法的参数.

用class关键字定义的类,类总该知道吧,class关键字后面紧接着的就是类名,public partial class Minform : Form那这句,Minform就是类的名字
类的成员包括变量,方法. 也就是说变量,方法通通都要定义在类里面,这是规则,所以你的问题1,2,3他们都必须在类里面声明.能在类外面声明的东西不多,也就4,5种,而结构,关键字为struct,恰好是其中之一,如果你想知道哪些可以定义在类外面,那你就在类外面定义一个变量,编译就会报错,并且在下方错误列表中提示你哪些关键字可以定义在类外面.

user[] myUsers;//这是声明的数组吗?
这是一个数组,数组的类型为代码上面定义的结构,也就是这个数组里面装的每一项,都是在上面定义的那个结构

public Minform()//这是声明结构型的方法成员吗?
这个在C#中叫构造方法,或叫构造函数,因为方法名跟类名相同,在类中,方法名跟类名相同的,就是构造方法,构造方法在创建该类实例时,会自动被调用

InitUser();// 它的用法是Init加结构名User吗?
这个一个方法,方法名是自己取的,跟结构没有半毛关系,之所以取这个名称,只是作者想要说明,这个方法的作用是用来初始化结构用的.

 private bool checkUser(string username, string pwd)//这句是不是敲出来的,还是像private void tb_pwd_TextChanged(object sender, EventArgs e){ }双击出来的?
这也是一个方法,当然是敲出来的,双击出来的方法叫我们把它叫做事件,事件种类不算太多,常用的就更少了,多看看,用一用就记住了,且事件的参数几乎都是(object sender, EventArgs e)这玩意儿,虽然不完全相同,但大同小异,而敲出来的方法,多半不会这么写.

 foreach (user u in myUsers)//这个语句是什么意思?
这个是for语句的简便写法,做用跟for是相同的,用起来比for方便,不用控制起始和结束,这里表示循环myUsers这个数组,每循环一次,都把值赋给user型变量u,直到把myUsers里面所有项都循环一遍结束

if (checkUser(userName,pwd)==true)//这个语句是什么意思?
这个一个判断语句,判断等号左边的值,跟右边的值是否一样,等号左边的是一个方法,从这个方法的声明中可以看出private bool checkUser(string username, string pwd),这个方法返回一个bool型的值,那么这里调用了这个方法,当然就会返回一个bool型的值,这个值要么是true,要么是false,这里就是判断这个方法返回的值是不是true.
2013-03-23 23:20
伍则帝
Rank: 3Rank: 3
来 自:四川省南充市高坪区
等 级:论坛游民
威 望:6
帖 子:100
专家分:34
注 册:2013-3-16
得分:0 
谢谢,你人真好。虽然有些我还不太懂,不过我会在实践中去理解的。刚才看到你的解答,所以没给你回帖。以后还要多多麻烦你呢!
2013-03-25 19:21
于思强
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-3-17
得分:0 
l
2013-03-25 19:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-401723-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.101926 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved