.学习的第一步首先就是要了解他的构成主体,而winform的组成部分都非常简单,而进行不断的组合叠加以后会变得越来越丰富加上事件命令代码自然会变得有趣以来,接下来就让我来带大家进入这个有趣的世界吧。
.首先我们进一步认识winform的常用控件:
这些就是winform中所有的空间,他们各司其职,通过不一样的要求我们将他们组合在一起最后实现任务所需的需求。
.接下来我会通过一个实例来为大家大致的将知识进行一个浓缩的回答,并附上图片来让大家了解的更容易,更深刻
.例:我们现在需要一个简易的登录系统,那么从最简单的出发首先我们需要两个大窗体,一个是登录页面为一个大部分,而进入后的页面为一个大部分,那么大家都知道的登录肯定是需要账号密码的那么大概构成就是:1.需要按钮出发登录效果,账号和密码的填入文本框和最基本的前缀提示那么大致是这样,我们还可以通过其中的backgroundimage来让自己的登录效果显得更完善,以下是大概外形:
那么接下来最重要的就是功能的实现了,最简单的是可以用if-else语句在登录按钮的功能设置中直接设置账号和密码,假设账号和密码为:,如果输入的不对就直接用messbox.show("输入错误"),可以弹出一个输入错误的弹窗进行提醒。
如图:
窗体显示的命令格式:
Frm2 z = new Frm2();
this.Hide();//起到隐藏我们登录页面窗体的作用
z.Show();
通过这样,一个最简单的登录功能实现了,在经过上面的命令我们即可跳转到另外一个主体窗体也就是主页面
.以我建立的一个简易主页面为主展开:
这是一个功能较为复杂的记事本,在其中用到的控件都是最基本的,都是文本框和按钮还有一些菜单控件,控件名字也在下列展示出来,接一来一一展示我给这个页面制作的功能:
.
首先我设置了一个公共类,可以获取到我们输入的账号和密码并写到最左侧的文本框中,if语句中的功能是可以通过菜单text为关闭的选项关闭整个程序,而再次因为他不是按钮所以我们要去这个控件的事件中去找到他的点击时间,可以认为和按钮同义,而application.exit()的作用就是直接整个退出程序。
而这三个就非常简单了,见名知意都是通过设置点击时间进行相应操作。
此时出现了新的语句,notifyicon这一控件是作用与每个电脑打开一个程序后程序图标的设置以及一些有关通知的作用,balloontiptext的作用就是设置通知的文本,后面英文的改变也可以看出来作用的不同,title就是标题,首位showballoontip()就是设置出现的时间,注意事项是:时间单位是毫秒(我填写的2000换算就是2s)
实现效果如下:
好的,那么最简单的一个登录和登录主页面的功能就完成了,到后面还可以给登录页面加上进度条增加美观的效果:
其中的注意事项就是要注意好这个属性的设置,在想做到图片随着进度条切换的功能时就要注意,例如三张图片这种页数情况就要设置成99,不然进度条就会始终差点。而图片的自动转换也要通过定时器的设置,如下:
private void timer1_Tick(object sender, EventArgs e)//在进度条的事件中找到定时器时间设置
{
this.pictureBox1.Image = this.imageList1.Images[i];//imagelist是可以直接将图片加入到一个集合里面的控件,方便与图片的循环展示
i++;
this.progressBar1.Value = j; //将定时器的值=初始值设置为0
if (j < 99)
{
j = j + 33;
}
else if (j >= 99)
{
this.timer1.Stop();
}
if (i > 2)
{
i = 0;
}
}
其他基本的作用就不一一概述了,接下来直接进入重点
!最重点最重要的环节:
.那么为什么会使用winform呢,很大程度上是因为它在一定程度上可以很便利的联通数据库并且一劳永逸的使用出那些我们需要长篇大论写在数据库新建查询中的语句,并且快捷的在winform中去修改那些数据。
.首先我们要从最基本的地方开始,我们要联通一个数据库,可以使用两种快捷的方法,一种是管理员模式,一种是输入账号密码格式,前者较不安全因为不能防注入,后者就较为安全一些,前者也可以通过例如:
using (SqlCommand cmd = new SqlCommand("SELECT * FROM Users WHERE Username = @Username AND Password = @Password", connection))
{ cmd.Parameters.AddWithValue("@Username", username); cmd.Parameters.AddWithValue("@Password", password); // 执行查询 }
这样可以提高安全性。
回到正题,连入数据库的两种方法分别为:
例如:/创建数据库链接
SqlConnection alal = new SqlConnection();
alal.ConnectionString = "server=(local);integrated security=True;database=A00Library";//第二中方法就是把(local)去掉改成.,中间部分改为密码
而最简单的效果就是将一个数据库内容在一个text文本框中显示出来,在这个过程中会将必要的格式都给大家进行补充。
private void button5_Click(object sender, EventArgs e)
{
//创建数据库链接
SqlConnection alal = new SqlConnection();
alal.ConnectionString = "server=(local);integrated security=True;database=A00Library";
//打开
alal.Open();
//创建命令
SqlCommand qweqwe = new SqlCommand();
//链接名字为alal的数据库
qweqwe.Connection = alal;
//执行命令
string sqlstr = "select * from TBL_BookClass";//命令语句
qweqwe.CommandText = sqlstr;
object obj = qweqwe.ExecuteScalar();
//记得把他们转成字符型才可以进行显示
this.textBox1.Text = obj.ToString();
}
这是通过一个按钮进行链接并且显示。
进而我们可以进行不同的操作,要想将进行本身操作就不能把他们载入到文本框中而是另外一个名为datagridview的控件中,链接数据库同理,不再过多赘述
.而最基本的增删改查作用也是可以一生二,二生三的:(如图)
其中的executenonquery就是用于数据的增删改查,仅此为重点,可以通过增加弹窗来告示删除了多少或者增加了多少,都取决与你在sqlcommand中写入的命令语句。
.而想真正的去改变数据库中的数据就是临时表和桥接器,桥接器可以将在临时表中输入的命令同步到真实表中实现数据改变,接下里就是最简单的实例:
但是不能少的步骤就是要在datagridview中链接好数据表,不然是无法进行操作的是在这个小方格中
对本学期的基本总结就是这样到此为止了,这些只是其中的九牛一毛,更多的乐趣和功能实现在等着大家,我也会继续进步的,