我们在编写C#窗体form时,尝尝需要使用弹出窗口的方法,去到二级页面去完成一些操作。在C#中提供了form.Show()
和form.ShowDialog()
两种方式来实现,而他们之间使用有什么区别呢?下面需要我们去了解一下二者的区别。
此方法弹出的窗体与父窗体(一级窗体)是属于同一等级的窗体,也就是他们之间可以相互存在、随意切换修改展示;
关闭窗口方法: this.Close()
或者form.Hide()
;
优点: 不会影响主页面的运行,相互独立可以切换查看数据;
缺点: 如果滥用的话会弹出多个窗口,影响性能;
适用场景: 二级列表的数据展示、详细页面展示…
此方法弹出的窗口会阻断父窗体(一级窗体)的运行,会置顶到最顶层,其他窗体都不能使用。只有在当前窗口关闭后才能继续执行其他逻辑。
关闭窗口方法:this.Close()
或者form.Hide()
;
优点: 可以专一的处理当前窗口逻辑,满足单一职责;
缺点: 阻断了其他窗口运行;
适用场景: 查询表单窗口、修改数据详情窗口…
// 假设有一个SonForm的弹出窗口
// 主界面MainForm
private void MainForm_Load(object sender, EventArgs e)
{
SonForm sonForm = new SonForm();
sonForm.show();
//sonForm.ShowDialog();
}
// SonForm弹出窗口
private void MainForm_Close()
{
// 关闭当前窗口
this.Close();
}
// 假设有一个SonForm的弹出窗口
// 主界面MainForm
private String currentSql = "";
private void MainForm_Load(object sender, EventArgs e)
{
SonForm sonForm = new SonForm();
//sonForm.show();
if (sonForm.ShowDialog().Equals(DialogResult.OK))
{
// 调用SonForm弹出窗口暴露出来的方法
currentSql = sonForm.GetDataInfo();
}
}
// SonForm弹出窗口
private String currentSql = "";
// 确认逻辑后关闭当前窗口
private void MainForm_Confirm()
{
// 设置DialogResult为OK,返回主界面时可以根据这个判断
this.DialogResult = System.Windows.Forms.DialogResult.OK;
// 关闭当前窗口
this.Close();
}
// 暴露出来的方法,获取数据
public string GetDataInfo()
{
return currentSql;
}
if (MessageBox.Show("确认删除?", "提示", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
{
return;
}