C#中点击按钮出现多个子窗口该怎么解决?

1.昨天在做项目时,发现一个问题,就是我使用的是C#来创建一个字窗口,这个窗口依附在父窗口中,但是每当我点击一次按钮,就会出现一个子窗口,导致结果是这样的


我们可以看到这个子窗口出现了两次【百分比数组……等均出现了两次】,但是为什么会出现这种情况呢?我们来看一下我写的代码

PieForm pieForm = PieForm.getPieForm();
            pieForm.FormBorderStyle = FormBorderStyle.None;//设置窗体无扩大,无缩小
            pieForm.Dock = DockStyle.Fill;//完整填充父边框
            pieForm.MdiParent = this;//将其父边框设置为当前边框
            pieForm.Show();//显示当前自边框
2.从代码中我们可以看到,我们新建了一个子窗口对象,对应的是pieForm ,但是假设我们又点击了一下这个子窗口按钮,但是实际上我们只是想在不同的功能按钮区域之间切换,却又发现,生成了一个新的按钮,这里面所涉及的就是单例模式在实际问题中的解决。

3.假若有人不了解单例模式,请看我之前的博客http://blog.csdn.net/liu16659/article/details/52927400,仔细了解什么是单例模式之后,我们来解决这个问题。

(1)首先我们去子窗口中,对应本文的即是“PieForm”窗口,修改该窗口的构造方法;

(2)在类中添加语句该类的一个实例化对象;

(3)使用一个公共可访问的静态方法,来返回该对象值。代码如下:

private PieForm()//将构造方法私有化
        {
            InitializeComponent();
        }

        private static  PieForm pieForm = new PieForm();//加载一个静态的私有的成员变量

        public static PieForm getPieForm()//返回这个实例化后的静态变量
        {
            return pieForm;
        }

我这里使用的是饿汉式单例模式,直接实例化,而在返回的时候直接返回当前这一个即可。问题就迎刃而解了。当然我们也可以使用C#中的同步锁方式,但是我还没有研究到,故不深述。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

说文科技

看书人不妨赏个酒钱?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值