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

xiaoxiao2021-02-28  87

问题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中所查询的行

转载请注明原文地址: https://www.6miu.com/read-84739.html

最新回复(0)