1、winform控件拖拉拽,基础布局先做好
3个label,一个用作logo,两个用作用户名和密码的标签;
2个textbox,用作输入账户名和密码;
2个button,一个用作登录,一个用作退出;
设计得有些丑,将就一下,主要是功能完善就OK。
2、控件的自适应设计
双击界面,进入界面的load事件中,将实现控件自适应窗口的主要流程预设好,Form1_Resize和setTag为两个需要自己写的方法。
private void LoadingForm_Load(object sender, EventArgs e)
{
this.Resize += new EventHandler(Form1_Resize);//窗体调整大小时引发事件
X = this.Width;//获取窗体的宽度
Y = this.Height;//获取窗体的高度
setTag(this);//调用方法
}
void Form1_Resize(object sender, EventArgs e)
{
float newx = (this.Width) / X; //窗体宽度缩放比例
float newy = this.Height / Y;//窗体高度缩放比例
setControls(newx, newy, this);//随窗体改变控件大小
}
public void setTag(Control cons)
{
foreach (Control con in cons.Controls)
{
con.Tag = con.Width + ":" + con.Height + ":" + con.Left + ":" + con.Top + ":" + con.Font.Size;
if (con.Controls.Count > 0)
setTag(con);
}
}
//遍历窗体中的控件,重新设置控件的值
public void setControls(float newx, float newy, Control cons)
{
foreach (Control con in cons.Controls)
{
string[] mytag = con.Tag.ToString().Split(new char[] { ':' });//获取控件的Tag属性值,并分割后存储字符串数组
float a = Convert.ToSingle(mytag[0]) * newx;//根据窗体缩放比例确定控件的值,宽度
con.Width = (int)a;//宽度
a = Convert.ToSingle(mytag[1]) * newy;//高度
con.Height = (int)(a);
a = Convert.ToSingle(mytag[2]) * newx;//左边距离
con.Left = (int)(a);
a = Convert.ToSingle(mytag[3]) * newy;//上边缘距离
con.Top = (int)(a);
Single currentSize = Convert.ToSingle(mytag[4]) * newy;//字体大小
con.Font = new Font(con.Font.Name, currentSize, con.Font.Style, con.Font.Unit);
if (con.Controls.Count > 0)
{
setControls(newx, newy, con);
}
}
}
窗口内控件的自适应就完成了,展示下效果:
3、控件发生触发事件的逻辑功能
这里主要是两个功能,一个登录按钮,一个退出按钮。
退出按钮比较简单,直接杀掉进程就可以了:
private void button2_Click(object sender, EventArgs e)
{
//退出软件
System.Environment.Exit(0);
}
登录按钮的功能也比较简单,无非就是两个子功能。
a、将账户名和密码二者的输入字符串和预设的账号和密码做一个比较,我预设的账号密码和高考里的假如你是Lihua差不多了,都是Admin。
public static class Sys_Info
{
//用户信息
public static readonly string UserName = "Admin";
public static readonly string PassWord = "Admin";
public static string Input_UserName = "";
public static string Input_PassWord = "";
}
然后是输入和"Admin"的对比功能:
/检测输入账号密码是否正确
public bool Examination_Name_and_PassWord(string name, string password)
{
if (name == "")
{
MessageBox.Show("请输入用户名");
return false;
}
else if (password == "")
{
MessageBox.Show("请输入密码");
return false;
}
else if (name != Sys_Info.UserName || password != Sys_Info.PassWord)
{
MessageBox.Show("用户名或密码错误");
return false;
}
MessageBox.Show("登录成功!");
return true;
}
b、登录成功后跳转到主界面:
private void button1_Click(object sender, EventArgs e)
{
//登录软件
bool ret = user.Examination_Name_and_PassWord(Sys_Info.Input_UserName, Sys_Info.Input_PassWord);
if(ret)
{
//设置登录成功状态
this.DialogResult = DialogResult.OK;
this.Close();
}
}
这里我将登录按钮里调用了一次判断输入,输入正确后设置登录成功的状态,然后在Main函数中实现一个由登录界面到主界面的跳转
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
LoadingForm loadingForm = new LoadingForm();
//打开登录界面
if (loadingForm.ShowDialog() == DialogResult.OK)
{
//登录成功后打开主界面
MDIParent1 mainForm = new MDIParent1();
Application.Run(mainForm);
}
}
winform小白的博客,欢迎各位大佬点评指正!