第六章 多窗体项目
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
方法二:
Form1中定义公有的属性和私有的字段, Form3中定义公有的属性和私有的字段,然后利 用Form1中定义Form3的对象,将Form1中定 义公有的属性传到Form3的对象的属性中去。
Form1中定义公有的属性和私有的字段
private int stu_id; private string stu_name; private string stu_sex; private DateTime stu_birth; public int Stu_Id { get { return stu_id; } set { stu_id = value; } } public string Stu_Name { get { return stu_name; } set { stu_name = value; } } public string Stu_Sex { get { return stu_sex; } set { stu_sex = value; } } public DateTime Stu_Birth { get { return stu_birth; } set { stu_birth = value; } }
第六章 多窗体项目
主要内容:
如何创建或添加一个窗体 如何显示一个窗体 如何无模或有模显示一个窗体 不同窗体之间数据的传递 创建和显示启动画面屏幕
6.1 创建和使用多个窗体
创建窗体有两种方法: 一是利用在项目中添加窗体的方法。添加后的窗 体依次按照窗体创建的顺序分别设置窗体类名为: Form1,Form2,…等。 二是利用Form类手工创建窗体,此种方法就是 要利用手工去创建窗体中的控件。
第四步,设置如下信息,点击程序集信息按钮
第五步:在如图所示界面中进行设置
第六步:显示About对话框
AboutBox1 aboutForm = new AboutBox1(); aboutForm.Show();
6.3 窗体中的方法和事件
方法: Show() ShowDialog() Hide() 事件: Form_load MouseClick MouseDown
private void Form2_Load(object sender, EventArgs e) { boBox1.Items.Add(""); boBox1.Items.Add("男"); boBox1.Items.Add("女"); }
Form3 f3 = new Form3(); //方法二:因为利用公有属性不能将F1中的传到窗口F3中,所以用 此办法,但不知道原因是什么? //方法二中问题是:复合框和日期控件无法设置其值,因为没有 VALUE属性。 //本题最终解决方法是:利用静态的字段和静态的属性进行解决的, 但是要注意一点是静态的字段和属性 //不是属于对象的,而是属于类的,所以要利用类来引用才行. //f3.Controls["textBox1"].Text = Stu_Id.ToString(); //f3.Controls["textBox2"].Text = Stu_Name; //f3.Controls["comboBox1"].s = Stu_Id.ToString(); //f3.Controls["dateTimePicker1"].Text = Stu_Id.ToString(); //f3.Controls["textBox1"].Text = Stu_Id.ToString(); f3.ShowDialog(); }
修改记录的代码
private void UpdateConfirm_Click(object sender, EventArgs e) { int UpdateStuID = int.Parse(this.textBox1.Text); string UpdateStuName=this.textBox2.Text; string UpdateStuSex = boBox1.Text; //注意,上面这句如果用SelectedText或 SelectedItem.ToString()的话,则必须选一次,否则性别赋值为空,赋值不上 去. DateTime UpdateStuBirth=this.dateTimePicker1.Value.Date; con.Open(); mandText = "update student set StuName='" + UpdateStuName + "',StuSex='" + UpdateStuSex + "',StuBirth='" + UpdateStuBirth + "' where StuID='" + UpdateStuID + "'"; cmd.Connection = con; cmd.ExecuteNonQuery(); con.Close(); }
6.4 多窗体项目中数据的传递
制作如图所示界面的程序,单击添加记录和修改 记录分别出现一个窗体,然后进行记录的添加和 修改。
点击添加记录按钮,出现Form2窗体。
添加数据成功后
Form1中添加记录的代码
private void Addbutton_Click(object sender, EventArgs e) { Form2 f2 = new Form2(); f2.ShowDialog(); }
方法一: Form1中定义静态的字段和属性
public partial class Form1 : Form { static private int stu_id; static private string stu_name; static private string stu_sex; static private DateTime stu_birth; static public int Stu_Id { get { return stu_id; } set { stu_id = value; } } static public string Stu_Name { get { return stu_name; } set { stu_name = value; } } static public string Stu_Sex { get { return stu_sex; } set { stu_sex = value; } } static public DateTime Stu_Birth { get { return stu_birth; } set { stu_birth = value; } }
Form3中读取Form1传过来的数据
private void Form3_Load(object sender, EventArgs e) {
boBox1.Items.Add(""); boBox1.Items.Add("男"); boBox1.Items.Add("女"); //Form1 f1 = new Form1(); //this.textBox1.Text = f1.GetStuID().ToString(); this.textBox1.Text = Form1.Stu_Id.ToString(); this.textBox1.ReadOnly = true; this.textBox2.Text = Form1.Stu_Name; boBox1.SelectedText = Form1.Stu_Sex; this.dateTimePicker1.Value = Form1.Stu_Birth.Date; }
将选中的记录的各字段的值读到字段中,也相应地到属性中。
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { stu_id = int.Parse(dataGridView1.SelectedRows[0].Cells[0].Value.To String()); stu_name = dataGridView1.SelectedRows[0].Cells[1].Value.ToString(); stu_sex = dataGridView1.SelectedRows[0].Cells[2].Value.ToString(); stu_birth = DateTime.Parse(dataGridView1.SelectedRows[0].Cells[3].V alue.ToString()); MessageBox.Show(stu_name + stu_sex + stu_birth); }
ቤተ መጻሕፍቲ ባይዱ
public partial class Form2 : Form { SqlConnection con = new SqlConnection(); SqlCommand cmd = new SqlCommand(); public Form2() { InitializeComponent(); con.ConnectionString="Data Source=.\\sqlexpress;Initial Catalog=Test;Integrated Security=True;Pooling=False"; } private void Confirmbutton_Click(object sender, EventArgs e) { //int iStuID = LastRecordID() + 1; int iStuID=int.Parse(this.textBox1.Text); string Name = this.textBox2.Text; cmd.Connection = con; con.Open(); mandText = "Insert into Student(StuID,StuName,StuSex,StuBirth) values (" + iStuID + ",'" + Name + "','" + comboBox1.SelectedItem + "','" + dateTimePicker1.Value.Date + "')"; cmd.ExecuteNonQuery(); con.Close(); MessageBox.Show("添加记录成功,现在记录总数为:" + GetRecordCount().ToString()); }
添加About对话框窗体第一步
添加About对话框窗体第二步
将About对话框窗体添加到项目中,在该步聚中 程序员可以自己修改窗体上的标签或文本框以及 图片框修改其中的信息。
添加About对话框窗体第三步
程序员也可以利用系统提供的功能来让关于对话 框自己显示我们 想添加的信息, 只需做些简单的 设置就可以了。 如图,在项目菜 单中点击该项目 属性。
窗体的显示
窗体的显示也有两种方式: 一种是有模显示:即利用ShowDialog()来进行显 示的。 另一种是无模显示:即利用Show ()来进行显示 的。
6.2 About对话框
About对话框的添加方法同一般窗体一样,但是 由于About对话框一般都是用来表示公司信息或 者版本信息的,所以格式基本相同,在开发环境 中微软件公司已经自定义了一个About对话框的 窗体模板,程序员可以根据需要进行添加,然后 稍作修改就可以使用了。
修改记录
选中一条记录,读到Form3对话框中,然后修改
问题:
数据如何从主窗体Form1中将数据送到Form3 中的呢?
方法:
定义公有的属性或方法
正在修改数据,修改完后点击修改保存
修改成功后
Form1中修改记录按钮的代码
private void Updatebutton_Click(object sender, EventArgs e) {