Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查类是否已实例化_C# - Fatal编程技术网

C# 检查类是否已实例化

C# 检查类是否已实例化,c#,C#,在我当前的程序中,我有一个主窗口和一个当按下按钮时弹出的辅助窗口。如果辅助窗口当前显示但没有焦点,则按钮将使其聚焦 此时,我正在主窗口加载时创建次窗口的新实例,并使用SubWindow.IsDisposed和SubWindow.CanFocus检查其状态 我发现,如果不在开始时创建新实例,SubWindow.IsDisposed会引发异常。只要我之前创建了子窗口的实例,检查就会正常运行 我的问题-当前版本运行良好,但是否有更好的方法?这不是一个大问题,但感觉最好是能够检查是否存在,而不必保证它以

在我当前的程序中,我有一个主窗口和一个当按下按钮时弹出的辅助窗口。如果辅助窗口当前显示但没有焦点,则按钮将使其聚焦

此时,我正在主窗口加载时创建次窗口的新实例,并使用SubWindow.IsDisposed和SubWindow.CanFocus检查其状态

我发现,如果不在开始时创建新实例,SubWindow.IsDisposed会引发异常。只要我之前创建了子窗口的实例,检查就会正常运行


我的问题-当前版本运行良好,但是否有更好的方法?这不是一个大问题,但感觉最好是能够检查是否存在,而不必保证它以前至少存在过一次。

您可以在子窗口上检查它是否为空。如果是这种情况,则实例化子窗口,否则它就存在。

您可以检查子窗口是否为空。如果是这种情况,那么实例化子窗口,否则它就存在。

伏都教使我走上了正确的道路。SubWindow==null在窗口打开一次然后关闭时返回false

当前使用

(SubWindow == null || SubWindow.IsDisposed)

到目前为止,它适用于所有情况。

伏都教使我走上了正确的道路。SubWindow==null在窗口打开一次然后关闭时返回false

当前使用

(SubWindow == null || SubWindow.IsDisposed)

到目前为止,它适用于所有情况。

使用单例模式实现第二个窗口


public class SecondForm : Form
{
       public static m_myInstance= new SecondForm();
       public static bool m_visible = false;

       public SecondForm ()
       {
              InitializeComponent()               
       }

       public SecondForm Instance()
       {
            return m_myInstance;
       }

      public static void Show()
      {
          ...
      }

} 

使用单例模式实现第二个窗口


public class SecondForm : Form
{
       public static m_myInstance= new SecondForm();
       public static bool m_visible = false;

       public SecondForm ()
       {
              InitializeComponent()               
       }

       public SecondForm Instance()
       {
            return m_myInstance;
       }

      public static void Show()
      {
          ...
      }

} 

类中可以有静态计数器属性。实例化时递增,处置时递减。一般来说。。。在您的情况下,您最好遵循伏都教的建议。

您可以在类中使用静态计数器属性。实例化时递增,处置时递减。一般来说。。。在你的情况下,你最好听从伏都教的建议。

为什么连评论都没说就被否决了?你的平台是什么?赢表格?wpf?为什么连一句话都没说就被否决了?你的平台是什么?赢表格?wpf?