作为一个大学生,我一直对计算机科学有着浓厚的兴趣。在接触到Windows Forms(Winform)之后,我深深地被其强大的功能和灵活性所吸引。我决定深入学习Winform,并在这个过程中获得了一些宝贵的经验。
Winform是一种基于.NET Framework的图形用户界面框架,它允许开发人员使用C#或VB.NET等.NET语言来创建Windows桌面应用程序。首先,我的目标是理解和掌握Winform的基本概念和技能。这包括了解和掌握Windows Forms的各个组件,如按钮、文本框、标签等,以及掌握如何使用这些组件来构建用户界面。
在学习的过程中,我认识到Winform是一种强大的工具,可以帮助我们快速构建复杂的用户界面。通过使用预定义的组件和布局控件,我们可以轻松地创建具有丰富交互性的应用程序。此外,Winform还提供了丰富的数据绑定和验证功能,使得处理用户输入变得更加简单。
在跟老师的学习过程中,我通过学习实现了一些简单的登陆界面设计、窗口跳转以及控件的基本使用和调用
下面是我在学习中创建的简单的登陆界面:
主界面
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 嘀嘀嘀
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void txtName_TextChanged(object sender, EventArgs e)
{
}
private void btnLogin_Click(object sender, EventArgs e)
{
DialogResult drs = MessageBox.Show("你确定要注册吗?", "取消注册", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
ddd form = new ddd(txtName.Text,txtPassword.Text,txtRemark.Text);
form.ShowDialog();
}
}
}
窗口二
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 嘀嘀嘀
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void txtName_TextChanged(object sender, EventArgs e)
{
}
private void btnLogin_Click(object sender, EventArgs e)
{
DialogResult drs = MessageBox.Show("你确定要注册吗?", "取消注册", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
ddd form = new ddd(txtName.Text,txtPassword.Text,txtRemark.Text);
form.ShowDialog();
}
}
}
下面是代码实现效果:
下面是上课过程中跟老师学习的图片:
下面是做图书管理系统的部分代码:
1.登录窗口部分代码:
private void btnLogin_Click(object sender, EventArgs e)
{
string count = textBox1.Text;
string pwd = textBox2.Text;
User user = new User { account = count, password = pwd };
bool result = ma.Login(user);
if (result)
{
this.Hide();
frmMain mainForm = new frmMain(textBox1.Text, pwd);
mainForm.StartPosition = FormStartPosition.CenterScreen;
mainForm.Show();
}
else
{
MessageBox.Show("账号或密码错误!!!");
}
}
private void btnRegister_Click(object sender, EventArgs e)
{
this.Hide();
frmRegister mainForm = new frmRegister();
mainForm.StartPosition = FormStartPosition.CenterScreen;
mainForm.Show();
}
private void Form1_Load(object sender, EventArgs e)
{
textBox2.PasswordChar = '*';
}
效果图
2.注册窗口部分逻辑代码:
private void btnSubmit_Click(object sender, EventArgs e)
{
string count = txt_count.Text;
string pwd = txt_pwd.Text;
string nc = txt_name.Text;
string rePwd = txt_submit.Text;
if (count == "" || pwd == "" || nc == "" || rePwd == "")
{
MessageBox.Show("请输入完整信息!!!");
return;
}
if (!ver.IsCode(txt_count.Text))//验证账号是否正确
{
MessageBox.Show("请输入4位数字账号!!!");
return;
}
if (!ver.IsChinese(txt_name.Text))//验证账号是否正确
{
MessageBox.Show("请输入中文昵称!!!");
return;
}
if (pwd == rePwd)
{
User user = new User { account = count, password = pwd, name = nc };
bool result = ma.Register(user);
if (result)
{
MessageBox.Show("注册成功!!!");
}
else
{
MessageBox.Show("账号已存在!!!");
}
}
else
{
MessageBox.Show("两次输入不一致!!!");
}
}
效果实现如下:
3.图书添加窗口部分逻辑代码:
if (checkNull())
{
string name = txtName.Text;
string author = txtAuthor.Text;
string press = txtPress.Text;
string bClass = cbClass.Text;
string number = txtNumber.Text;
string bfrom = txtFrom.Text;
if (!ver.IsNumber(txtNumber.Text))
{
MessageBox.Show("数量只能为数字计数!!!");
}
Book book = new Book
{
bookName = name,
bookAuthor = author,
bookPress = press,
bookClass = bClass,
bookNumber = number,
bookFrom = bfrom,
bookPhoto = bytes
};
bool result = bk.Addbook(book);
if (result)
{
MessageBox.Show("添加成功");
getAll();
ClearAll();
}
else
{
MessageBox.Show("添加失败");
}
}
else
{
MessageBox.Show("请输入完整信息");
}
}
//图片获取
private void btnPhoto_Click(object sender, EventArgs e)
{
OpenFileDialog openfile = new OpenFileDialog();
openfile.Title = "请选择客户端longin的图片";
openfile.Filter = "Login图片(*.jpg;*.bmp;*png)|*.jpeg;*.jpg;*.bmp;*.png|AllFiles(*.*)|*.*";
if (DialogResult.OK == openfile.ShowDialog())
{
try
{
bytes = File.ReadAllBytes(openfile.FileName);
pictureBox1.Image = System.Drawing.Image.FromStream(new MemoryStream(bytes));
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
}
catch { }
}
}
4.图书修改窗口部分逻辑代码:
private void btnRevise_Click(object sender, EventArgs e)
{
if (checkNull())
{
int no = int.Parse(bookId);
string name = txtName.Text;
string author = txtAuthor.Text;
string press = txtPress.Text;
string bClass = cbClass.Text;
string number = txtNumber.Text;
string bfrom = txtFrom.Text;
Book book = new Book
{
bookId = no,
bookName = name,
bookAuthor = author,
bookPress = press,
bookClass = bClass,
bookNumber = number,
bookFrom = bfrom,
bookPhoto = bytes
};
bool result = bk.Updatebook(book);
if (result)
{
MessageBox.Show("修改成功");
getAll();
ClearAll();
}
else
{
MessageBox.Show("修改失败");
}
}
else
{
MessageBox.Show("请输入完整信息");
}
}
5.图书查找和删除部分代码:
private void buttonName_Click(object sender, EventArgs e)
{
if (textBox1.Text.Equals(""))
{
MessageBox.Show("请输入书名");
}
else
{
dataGridView1.DataSource = bk.SelectNameOnes(textBox1.Text);
}
}
private void buttonClass_Click(object sender, EventArgs e)
{
if (cbClass.Text.Equals(""))
{
MessageBox.Show("请选择类别");
}
else
{
dataGridView1.DataSource = bk.SelectOneBoook(cbClass.Text);
}
}
private void buttonAll_Click(object sender, EventArgs e)
{
getAll();
}
private void button4_Click(object sender, EventArgs e)
{
if (textBox2.Text.Equals(""))
{
MessageBox.Show("请输入图书编号");
}
else
{
int no = int.Parse(textBox2.Text);
Book book = new Book { bookId = no };
bool result = bk.Deletebook(book);
if (result)
{
MessageBox.Show("删除成功");
}
else
{
MessageBox.Show("删除失败");
}
getAll();
textBox2.Text = "";
}
}
6.借出归还部分代码:
private void button1_Click(object sender, EventArgs e)
{
int i = int.Parse(num);
if (textBox1.Text == "")
{
MessageBox.Show("出库失败!!!");
}
else
{
if (i <= 0)
{
MessageBox.Show("对不起!库存不足");
}
else
{
int no = int.Parse(textBox3.Text);
i= i - 1;
num = i.ToString();
Book book = new Book { bookId = no,bookNumber=i.ToString() };
bool result = bk.UpdateNum(book);
if (result)
{
MessageBox.Show("出库成功!!!");
label6.Text = num;
label13.Text = num;
getAll();
}
else
{
MessageBox.Show("出库失败");
}
}
}
}
private void frmRe_Load(object sender, EventArgs e)
{
getAll();
}
private void button2_Click(object sender, EventArgs e)
{
if (textBox2.Text=="")
{
MessageBox.Show("编号为空!!!");
return;
}
if (!ver.IsCode(textBox2.Text))//验证编号号是否正确
{
MessageBox.Show("编号格式有误!!!");
return;
}
try
{
num = bk.SelectBookOne(textBox2.Text).DataSet.Tables[0].Rows[0]["数量"].ToString();
}
catch
{
MessageBox.Show("没有该图书!!!");
return;
}
try
{
int i = int.Parse(num);
int no = int.Parse(textBox2.Text);
i = i + 1;
num = i.ToString();
Book book = new Book { bookId = no, bookNumber = i.ToString() };
bool result = bk.UpdateNum(book);
if (result)
{
textBox3.Text = textBox2.Text;
MyBook(textBox2.Text);
MessageBox.Show("入库成功!!!");
getAll();
}
else
{
MessageBox.Show("入库失败");
}
}
catch
{
MessageBox.Show("入库失败!!!");
}
}
7. 修改密码:
private void button1_Click(object sender, EventArgs e)
{
if (textBox2.Text == "" || textBox3.Text == "")
{
MessageBox.Show("请输入完整");
}
else
{
if (textBox2.Text.Equals(textBox3.Text))
{
string no = SendAccount;
string pwd = textBox2.Text;
User u = new User
{
account = no,
password = pwd
};
bool result = ma.UpdatePwd(u);
if (result)
{
MessageBox.Show("修改成功");
}
else
{
MessageBox.Show("修改失败");
}
}
else
{
MessageBox.Show("两次密码不一致");
}
}
}
在目前社会,有很大一部分的图书馆或者商店书籍更新不断,有时候很难进行高效简单的管理,甚至不进行入库登记管理,这给日后管理统计查看书籍存量和馆藏书籍目录带来了相当大的麻烦,因此图书管理显得尤为重要,图书管理系统可以很好的解决书籍检索、查看、统计问题,从而做到对馆藏图书情况的掌握。
以上就是部分学习中创建的代码 ,如有不对,欢迎指正。
在学习的过程中,我也遇到了一些困难和挑战。例如,在学习如何使用Winform的各种组件和控件时,我遇到了困难。但是,通过老师的讲解、查阅文档和在线资源,以及不断的实践和尝试,我逐渐掌握了这些知识。
总的来说,Winform的学习过程是一次富有挑战性和收获的经历。通过学习和实践,我不仅掌握了Winform的基本概念和技能,还提高了自己的思考和判断能力。我相信,这次学习将对我未来的学习和职业生涯产生积极的影响。我坚信,通过不断地学习和实践,我将能够成为一名优秀的软件工程师。