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

    xiaoxiao2021-12-14  18

    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#中的同步锁方式,但是我还没有研究到,故不深述。

    转载请注明原文地址: https://ju.6miu.com/read-969668.html

    最新回复(0)