目录
eg11:综合应用__记事本程序(OpenFileDialogue SaveFileDialogue)
winform控件
一、概述
- partial:部分类
- 从窗体切换到后台代码:F7 千千万万不要在窗体上随便双击
- 在C#中所有的对象都是由类生成的
Form1.Designer.cs:这个文件大家不要去手动修改它,它是由系统自动生成的。
Form1.resx:资源文件 可以制作双语文件
- 窗体程序的入口点也是Main函数
- 窗体控件的学习,实质就是对该控件的属性和事件的学习。
- 窗体程序中,弹出对话框使用MessageBox
当双击窗体上的控件时,就会为该控件添加一个默认的事件,默认的即最常用的
事件:可以说是用户的操作,比如说按下键盘,点击鼠标,双击鼠标,鼠标移入,让该控件可以做一些事情
构造函数是用来初始化控件的
二、常用属性
Text:显示在控件上的文本
Name:该控件的姓名,在后台代码中,通过Name属性来访问该控件
- 谁是主窗体:在Main函数中,先把谁new出来,谁就是主窗体。
。。。。。。
注:如何关闭主窗口:
方法一:创建static静态类。
方法二:Application.Exit();
方法三:System.Environment.Exit(0);//彻底关闭
MouseEnter:当鼠标指针穿过元素时,会执行事件.
eg1:Do you love me?
当鼠标移入button的时候,我立马改变Button的位置,移出鼠标范围
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("I love you");
}
private void button2_Click(object sender, EventArgs e)
{
MessageBox.Show("好吧,我投降了!");
}
private void button2_MouseEnter(object sender, EventArgs e)
{
//找到鼠标可以移动的最大范围
int fx = this.ClientSize.Width;
int fy = this.ClientSize.Height;
int w = button2.Width;
int h = button2.Height;
int x = fx - w;
int y = fy - h;
Random r = new Random();
Point p = new Point();//坐标
p.X = r.Next(0, x);
p.Y = r.Next(0, y);
button2.Location = p;
}
}
所有知识基本上都是围绕着类,定时器也不例外,Timer类 属性 方法
Enable:控件是否可用
Interval:时间间隔 希望定时器多久执行一次 计时单位是ms 1s=1000ms
Tick事件:事件到了,让定时器做什么,在该事件中实现
获取当前时间:DateTime类
Start():启动定时器
Stop():停止定时器
让窗体居中:StarPosition 改成:CenterScreen
Timer:在指定的时间间隔内做一些事情
eg2:动态的显示当前时间:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
textBox1.Text = DateTime.Now.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
timer1.Start();
}
private void button2_Click(object sender, EventArgs e)
{
timer1.Stop();
}
}
eg3:跑马灯
关键:timer事件中,将字符串的第一个字符放到最后。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
string str = textBox1.Text;
string tou = str.Substring(0, 1);
string sub = str.Substring(1, str.Length - 1)+tou;
textBox1.Text = sub.ToString();
}
private void btnStart_Click(object sender, EventArgs e)
{
timer1.Start();
}
private void btnStop_Click(object sender, EventArgs e)
{
timer1.Stop();
}
}
eg4:简单记事本NoteBook
窗体1(登录):
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (textUser.Text == "admin" && textPwd.Text == "123")
{
this.Hide();
MessageBox.Show("欢迎光临!");
Form2 f2 = new Form2();
f2.Show();
}
else
{
MessageBox.Show("输入错误!");
}
}
}
窗体2(写字板):
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
textBox1.WordWrap = false;
}
private void 自动换行ToolStripMenuItem_Click(object sender, EventArgs e)
{
textBox1.WordWrap = true;
}
private void 保存ToolStripMenuItem_Click(object sender, EventArgs e)
{
using(StreamWriter sw=new StreamWriter(@"E:\notebook.txt", false, Encoding.Default))
{
sw.Write(textBox1.Text);
MessageBox.Show("保存成功!");
}
}
private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
注:1.让文本框变成密码框:设置textBox1的PasswordChar属性 为 *。
2.将文本框的WordWrap属性设为True----自动换行
eg5:单选和多选
Checked:指示控件是否处于选中状态
默认情况下,单选控件只能被选中一个,用GroupBox进行分组
private void button1_Click(object sender,