Button和This的DialogResult

今天早操作WinForm时遇到了一个问题,在此和大家分享一下。

场景:在一个WinForm:A中通过按钮打开另外一个WinForm:B,A通过判断B中点击“OK”按钮或者“Cancel”按钮,进行相应的操作。

问题:每次在B中需要点击两次“OK”或者“Cancel”按钮,A才能接受到按钮的返回值。

代码:

Form A:

public partial class A : Form

    {

public A ()

        {

            InitializeComponent();

        }

private void button1_Click(object sender, EventArgs e)

        {

B b = new B();

if(b.ShowDialog() == DialogResult.OK)

            {

//Do something

            }

if(b.ShowDialog() == DialogResult.Cancel)

            {

//Do something

            }

        }

    }

Form B:

public partial class B: Form

    {

public B()

        {

            InitializeComponent();

        }

  private void OK_Click(object sender, EventArgs e)

        {

            OK.DialogResult = DialogResult.OK;

        }

private void Cancel_Click(object sender, EventArgs e)

        {

            Cancel.DialogResult = DialogResult.Cancel;

        }

 }

最终查明原因,原来是WinForm中Button控件的原理没有弄清楚。在Click方法第一次运行,DialogResult的结果是WinForm的DialogResult结果,运行Form的DialogResult是没有留下任何值;但是在Click方法第二次执行,DialogResult的结果是Button控件的DialogResult结果。

解决办法:在Click方法中使用this.DialogResult代替Button.DialogResult

代码如下修改后,就不需要点击两次按钮了。

Form B:

public partial class B: Form

    {

public B()

        {

            InitializeComponent();

        }

  private void OK_Click(object sender, EventArgs e)

        {

this.DialogResult = DialogResult.OK;

        }

private void Cancel_Click(object sender, EventArgs e)

        {

this.DialogResult = DialogResult.Cancel;

        }

 }

希望对遇到同样问题的朋友有帮助!

不够详尽、清楚地地方,还请帮忙补充!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏DannyHoo的专栏

标签栏代码

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

14010
来自专栏西安-晁州

react-native学习之入门app

1、项目初始化: react-native init MyProject 2、启动项目: cd MyProject react-native start 新开c...

23500
来自专栏iOS122-移动混合开发研究院

实现iOS图片等资源文件的热更新化(二):自定义的动态 imageNamed

这篇文章,要解决的是,使用一个自定义的 imageNamed 函数来替代系统的 imageNamed 函数.内部逻辑,将贯穿对比论证 关于"合适"的图片的定义....

21760
来自专栏coding...

Objective-C MapKit的使用-LBS简单的租车主界面demo效果分析代码demo地址

https://github.com/gongxiaokai/EasyCarDemo

18540
来自专栏一“技”之长

macOS开发之NSTableView的应用详解

    和iOS开发中的UITableView有很大差别,NSTableView并非是一个可滚动的列表视图,其是一个不可滚动、支持多列多行的原始列表视图。若要使...

33020
来自专栏技术总结

金额跳动动画效果

10130
来自专栏Alice

从网络上下载省份城市名称并存入文件然后进行读取省份城市

//实现的功能是 从后台拿到城市的省份以及名称,然后保存在本地的沙盒中 在使用的时候再拿出来用。 步骤1 //向后台请求数据 //忽略缓存 [Requ...

21650
来自专栏移动端周边技术扩展

UITableViewCell中添加复制逻辑

17840
来自专栏编程之旅

iOS 全局禁止横屏,但视频播放界面选择性横屏的解决办法

有时我们的APP并没有适配横屏的需求,但是在个别视频播放界面,我们需要在播放视频的时候横屏,退出全屏的时候不能横屏,但是有时候并没有原生API并没有给出解决方案...

64020
来自专栏陈满iOS

iOS网络请求之上传图片:从示例到源码解析 -- 以上传Face++SDK回调的图片为例(HYNetworking,AFNetworking,XMNetworking)

本文一开始上传图片以调用HYNetworking的API为例,这个网络框架是以AFNetworking为基础进行的封装。HYNetworking内部实现上传图片...

26920

扫码关注云+社区

领取腾讯云代金券