C# 实践1——与数据库相关的窗体

**初始界面**
问题1:初始拖动控件过小

ADO.NET导入数据库

public partial class Form1 : Form
    {
        jiaowudataEntities mydb = new jiaowudataEntities();

新建一个数据库全局变量

**管理界面**
IsMdiContainer属性true,使之成为一个父窗体

        private void button1_Click(object sender, EventArgs e)
        {
            var user = textBox1.Text;
            var code = textBox2.Text;
            var xs = mydb.学生表.Any(x => x.姓名 == user && x.密码 == code);
            if (xs)
            {
                Form2 FormMain = new Form2();
                FormMain.Show();
            }
            else
            {
                MessageBox.Show("用户名或密码错误");
            }
        }

初始界面“确认”键代码,如果用户名和密码存在于数据库中,则弹出管理界面窗口,否则弹窗提示“用户名或密码错误”
问题2:var xs = mydb.学生表.Any(x => x.姓名 == user && x.密码 == code);关于Any中的表示

学生表
Form3只有一个dataGridView控件,目的是在管理界面中作为子窗体显示

    public partial class Form3 : Form
    {
        jiaowudataEntities mydb = new jiaowudataEntities();

新建数据库全局变量

        private void Form3_Load(object sender, EventArgs e)
        {
            dataGridView1.DataSource = mydb.学生表;
        }

在dataGrvidView控件中显示学生表中的数据
这里写图片描述
显示如上错误

     dataGridView1.DataSource = mydb.学生表.ToList();

使用ToList方法解决
问题3:dataGridView的数据引用

PS:控件的Anchor属性可以固定其与窗体边缘的相对位置,以达到调整窗体大小可以相应改变控件大小的目的

    private void 学生管理ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        Form3 xsb = new Form3();
        xsb.MdiParent = this;
        xsb.Show();
    }

管理界面中单击管理菜单下的学生管理按钮的代码,制定Form3的父窗体到管理界面窗体,单击时显示。
问题4:重复单击学生管理按钮,弹出多个窗体,与容器窗体初衷相悖

学生表(改)
Form3上添加“增删查改”四个标签

这里写图片描述
“添加”与“修改”按钮共用的信息修改窗口

但是,修改过程中如何实现从窗口Form3调用所在行信息好麻烦,未完待续。


过了半个星期了,继续- -|||

        学生表 currxs;

        public Form4(学生表 xs)
        {
            InitializeComponent();
            xs = currxs;
            textBox1.Text = xs.学号;
        }

之前是这么写的来着,然后运行到这会报错显示xs是null,可不是嘛,自己在前面定义一个currxs然后又赋值给xs,宛若智障。。。

            Form4 FormEdit = new Form4(xs);
        学生表 currxs;

        public Form4(学生表 xs)
        {
            InitializeComponent();
            currxs = xs;
            textBox1.Text = currxs.学号;
            textBox2.Text = currxs.姓名;
            textBox3.Text = currxs.性别;
            textBox4.Text = currxs.班级;
            textBox5.Text = currxs.通信地址;
            textBox6.Text = currxs.出生日期.ToString();
            textBox7.Text = currxs.身高.ToString();
            textBox8.Text = currxs.金额.ToString();
        }

窗体间的参数传递:在调用窗体的时候,加上参数;被调用窗体直接引用即可。
此处老师的示例新建了一个全局变量,并先将所调用的参数传递给本窗体的全局变量再进行 操作。

        private void button1_Click(object sender, EventArgs e)
        {
            var xs = new 学生表();
            xs.学号 = textBox1.Text;
            xs.姓名 = textBox2.Text;
            xs.性别 = textBox3.Text;
//            xs.班级 = textBox4.Text;
            xs.通信地址 = textBox5.Text;
            xs.出生日期 = DateTime.Parse(textBox6.Text);
            xs.身高 = decimal.Parse(textBox7.Text);
            xs.金额 = decimal.Parse(textBox8.Text);
            var mydb = new jiaowudataEntities();
            mydb.学生表.Add(xs);
            mydb.SaveChanges();
            this.Close();
        }

其中老师给的数据库中“班级”与其他表有关联(其他表的主键),所以不可以进行更改

        private void textBox2_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                var user = textBox1.Text;
                var code = textBox2.Text;
                var xs = mydb.学生表.Any(x => x.姓名 == user && x.密码 == code);
                if (xs)
                {
                    Form2 FormMain = new Form2();
                    FormMain.Show();
                }
                else
                {
                    MessageBox.Show("用户名或密码错误");
                }
            }
        }

新增在登录界面回车进行输入的功能,利用KeyDown和 .KeyCode==Keys.Enter
问题:查询如何定位到DateGridView中所查询的行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值