0
点赞
收藏
分享

微信扫一扫

C#窗体编程:对话框


C#窗体编程:对话框_父窗口


持续更新

  • ​​对话框​​
  • ​​系统自带的一些对话框类​​
  • ​​对话框内存销毁​​
  • ​​对话框的阻塞​​
  • ​​对话框属性​​
  • ​​对话框的返回​​
  • ​​对话框的默认响应​​


手动添加事件


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



举报

相关推荐

0 条评论