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

C# 实践1——与数据库相关的窗体_第1张图片
问题1:初始拖动控件过小

ADO.NET导入数据库

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

新建一个数据库全局变量

C# 实践1——与数据库相关的窗体_第2张图片
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中的表示

C# 实践1——与数据库相关的窗体_第3张图片
Form3只有一个dataGridView控件,目的是在管理界面中作为子窗体显示

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

新建数据库全局变量

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

在dataGrvidView控件中显示学生表中的数据
C# 实践1——与数据库相关的窗体_第4张图片
显示如上错误

     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:重复单击学生管理按钮,弹出多个窗体,与容器窗体初衷相悖

C# 实践1——与数据库相关的窗体_第5张图片
Form3上添加“增删查改”四个标签

C# 实践1——与数据库相关的窗体_第6张图片
“添加”与“修改”按钮共用的信息修改窗口

但是,修改过程中如何实现从窗口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中所查询的行

你可能感兴趣的:(c#,数据库,visual-studio,入门,学习记录)