手动添加事件
public Form1()
{
InitializeComponent();
testButton.Click += new EventHandler(this.OnTest);
button1.Click += new EventHandler(this.OnTest);
button1.Name = "button1";
testButton.Name = "hhh";
}
public void OnTest(object sender, EventArgs e)
{
Button btn = sender as Button;
MessageBox.Show($"大家好 {btn.Name} ");
}
对话框
系统自带的一些对话框类
OpenFileDialog 打开文件对话框
SaveFileDialog 保存文件对话框
FolderBrowserDialog 目录选择对话框
ColorDialog 颜色选择对话框
FontDialog 字体选择对括框
对话框内存销毁
Form窗口对象含有非托管资源,需要手工销毁
对话框的阻塞
示例:
MyDialog dlg = new MyDialog();
dlg.ShowDialog(this);
dlg.Dispose();
阻塞的效果:
1 方法卡在ShowDialog 这一行,不往下执行
2 对话框窗口可以活动,后面的父窗口不可以活动
可以理解为,ShowDialog()内部有一个while循环,在一直等待窗口关闭事件。
对话框属性
(外观) Text 窗口标题
(窗口样式) MaximizeBox 最大化按钮
(窗口样式) MinimizeBox 最小化按钮
(窗口样式) ShowInTaskbar 是否在任务栏显示
(布局) StartPosition 窗口显示位置
(外观) FormBorderStyle 边框设定/是否可以调整大小
对话框的返回
当对话框关闭时,ShowDialog() 返回一个值
示例:
MyDialog dlg = new MyDialog();
DialogResult rc = dlg.ShowDialog();
dlg.Dispose();
怎么让对话框关闭呢?
设置 Form.DialogResult 属性时,可以关闭对话框
示例:
void okButton_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
}
并且,这个 DialogResult 就是 ShowDialog() 的返回值
有输入框的时候,取得用户输入
先判断用户是点了‘确定’还是‘取消’
再从对话框中取得用户的输入值
DialogResult rc = dlg.ShowDialog();
if(rc == DialogResult.OK)
{
string str = dlg.edit.Text;
……
}
设置 DialogResult,有两层作用:
关闭对话框
设定返回值, 即 ShowDialog() 返回的值
先判断,再处理,最后关闭
对话框的默认响应
属性中设置
AcceptButton: 当按回车键时触发
CancelButton: 当按ESC键时触发
另外,当点叉号关闭窗口时,相当于Cancel