机房重构之模态窗口

当我们做机房重构的时候,或许会碰到这样的问题?操作某一窗体的时候,想要通知另外一个窗体我采取了什么操作,那么我们该怎么办?委托还是事件,这里好像有些大材小用,下篇博客将会介绍这种操作。

思考:想要告诉另外一个窗体根据本窗体的操作来执行不同的代码(过程),那么我只要给另外一个窗体不同的返回值就可以解决这个问题了。

模态窗口作用:

1:解决附带窗体不关闭,主窗体无法进行其它操作;

2:通过操作附带窗体,返回相应的值(OK或Cancel),然后在主窗体中进行相应的判断(执行不同的代码);

实践操作范例:

目的:弹出“学生类型管理”窗体后进行学生类型的各种操作,然后给“学生信息管理”窗体返回(Ok或者False),以便判断执行不同的代码

 

  • 学生类型管理窗体
        //学生类型管理窗体的删除按钮,以便删除后及时在学生信息管理窗体中更新,因此需要返回值。
        private void btnDelete_Click(object sender, EventArgs e)
        {
            var rows = dgvList.SelectedRows[0];
            int id = Convert.ToInt32(rows.Cells[0].Value);
            DialogResult result = MessageBox.Show("确定要删除吗?", "提示", MessageBoxButtons.OKCancel);
            if (result==DialogResult.Cancel)
            {
                return;
            }
            if (stiFacade.Remove(id))//学生类型表中删除数据
            {
                LoadList();//重新加载列表
            }
            else
            {
                MessageBox.Show("删除失败,请稍后重试");

            }
            result = DialogResult.OK;

        }
        //关闭学生类型管理窗体的触发事件
        private void FormStudentTypeInfo_FormClosing(object sender, FormClosingEventArgs e)
        {
            _form = null;//单利代码
            this.DialogResult = result;//模态窗体代码
        }
  • 学生信息管理窗体 
        //学生信息管理窗体的“类型管理”按钮单击事件
        private void btnTypeManage_Click(object sender, EventArgs e)
        {
            FormStudentTypeInfo formSti =FormStudentTypeInfo.Create();//实例化学生类型窗体
            DialogResult result = formSti.ShowDialog();//接收从学生类型窗体返回值
            if (result==DialogResult.OK)//逻辑判断
            {
                LoadList();//重新加载学生信息数据
                LoadTypeList();//重新加载学生类型数据
            }
        }

以上就是模态窗口的使用过程,只要符合上面作用中的一条就可以加以应用,效果还不错;

评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值