窗体应用:
窗体应用是应用非常广泛的,比如LOL、CF等热门游戏,又比如QQ等,甚至是C#的编写软件Visual Studio本身也是一个窗体应用。
注:当系统没有我们要的颜色的时候,可以去PhotoShop里将颜色的RGB字符串复制过来,然后在窗体应用的属性里以#号开头也是可以用自己想要的颜色的。
所以很多人也能自己在PS里面弄图标,但是我这样要给大家分享一个字体图标网站。https://www.iconfont.cn/海量图标可供搜索
知识点笔记:
DBHelper类的我就在这不列述了。
弹出消息框:MessageBox.Show();
括号内可以有四个元素:
1、消息框信息;string类型
2、消息框名称; string类型
3、消息框选择按钮;MessageBoxButtons类型
4、消息框内容提示图标; MessageBoxIcon类型
接收消息框选择:
DialogResult name(自定义) = MessageBox.Show();
退出整个窗口程序:
Application.Exit();
设置流氓窗口:
在窗口的关闭时间里面,输入代码(其中name是上面接收消息框选择的name)
if(name == DialogResult.Yes){
e.Cancel = true;
}
窗口将无法正常关闭,只能通过任务管理器强制关闭。(不过你愿意关机重启也行。)
C#窗体应用的创作:
C#窗体应用的创建只需在创建项目时,选择Windows窗体应用(.NET Framework)即可。
主要依赖工具箱里的公共控件、容器、菜单和工具栏等对空白的窗体进行装饰。
再加上通过右键点击出控件或窗口的属性,对相应的属性进行调整。
默认会切换到属性页面,也可以选择属性旁边的事件对窗体进行事件触发。
比如我们的QQ就是通过登录按钮,在数据库中核对好账号、密码后,转换到另一个供用户使用的窗体。
尝试制作一个简单的窗体应用:
外貌样式的制作和PS与HTML有点像,有的部分需要拖出控件,而各种属性又像是像HTML一样的属性设置。
代码实现事件处理:
通过点出需要触发的控件,右键调出属性,在属性的事件里双击需要触发的代码事件,就能调出对应的方法,然后再自行编辑需要发生的事件效果。
我们已退出程序和安全登录为例子:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Dome6._02
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 退出程序按钮事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{
//退出程序时的弹窗提示信息
DialogResult result =
MessageBox.Show("你确定要离开吗?", "系统提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if(result == DialogResult.Yes)
{
Application.Exit(); //退出整个程序窗口
}
}
/// <summary>
/// 安全登录按钮事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
DBHelper.constr = "server = .;database = UserIdPwd;uid = sa;pwd = Lj793150148";
DBHelper.OpenSql();
if(DBHelper.conn.State == ConnectionState.Open)
{
MessageBox.Show("数据库连接成功");
}
string sql = "select * from Table_user";
SqlDataReader read = DBHelper.ExecuteRead(sql);
int State = 0;
string name = "";
try
{
while (read.Read())
{
if (comboBox1.Text == (string)read["id"] && textBox1.Text == (string)read["pwd"])
{
State++;
name = (string)read["name"];
return;
}
}
}
catch (Exception)
{
MessageBox.Show("程序代码第55行到第66行运行错误");
}
finally
{
if (State > 0)
{
MessageBox.Show(string.Format("欢迎用户“{0}”回归!!", name));
}
else
{
MessageBox.Show("用户名或密码错误");
}
read.Close(); //关闭只读的连接通道
DBHelper.conn.Close(); //关闭数据库连接通道
}
}
}
}
创建的DBHelper类:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dome6._02
{
class DBHelper
{
public static string constr = ""; //数据库连接字符串
public static SqlConnection conn = new SqlConnection(constr); //数据库连接对象
/// <summary>
/// 确保数据库连接通道打开
/// </summary>
public static void OpenSql()
{
conn = new SqlConnection(constr);
if(conn.State == ConnectionState.Broken)
{
conn.Close();
conn.Open();
}
if(conn.State == ConnectionState.Closed)
{
conn.Open();
}
}
/// <summary>
/// 数据库增、删、改操作方法
/// </summary>
/// <param name="sql">数据库操作语句</param>
/// <returns>返回受影响行数</returns>
public static int ExecuteCom(string sql)
{
OpenSql();
SqlCommand com = new SqlCommand(sql, conn); //数据库操作对象
int result = com.ExecuteNonQuery();
return result;
}
/// <summary>
/// 数据库查询操作方法
/// </summary>
/// <param name="sql">数据库操作语句</param>
/// <returns>返回SqlDataReader语句</returns>
public static SqlDataReader ExecuteRead(string sql)
{
OpenSql();
SqlCommand com = new SqlCommand(sql, conn);
SqlDataReader read = com.ExecuteReader();
return read;
}
}
}
总结:
看起来代码很多,但很多其实都是系统生成的。我们只需要点击对应的事件,就能打开对应的事件方法进行代码编写。
程序通过在数据库中对比对应的账号、密码确认是否有该名合法用户,只有满足条件才能登陆成功。所以这也把我们之前学到的知识点应用了起来。