首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >阻止显示一个窗体的多个实例

阻止显示一个窗体的多个实例
EN

Stack Overflow用户
提问于 2010-01-07 04:51:00
回答 8查看 17.1K关注 0票数 8

我正在开发一个应用程序,其中有一个主窗体和几个可以同时使用的其他窗体。当用户单击打开另一个表单时,我希望这样,如果表单已经打开,则单击该表单的按钮不会再次打开该表单。

showDialog不起作用,因为用户仍然需要访问主窗体上的控件。

这是我的帮助窗口的代码,所有其他窗体都以相同的方式打开。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private void heToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form help = new help();
            help.Show();
        } 
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-01-07 05:17:40

使用单例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class HelpForm : Form
{
   private static HelpForm _instance;
   public static HelpForm GetInstance()
   {
     if(_instance == null) _instance = new HelpForm();
     return _instance; 
   }
}

.......

private void heToolStripMenuItem_Click(object sender, EventArgs e)
{
     HelpForm form = HelpForm.GetInstance();
     if(!form.Visible)
     {
       form.Show();
     }
     else
     {
       form.BringToFront();
     }
}
票数 11
EN

Stack Overflow用户

发布于 2010-01-07 05:18:16

或者,您也可以使用应用程序的打开窗体来查看它是否已打开

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
btn_LaunchHelp(object o, EventArgs e)
{

   foreach (Form f in Application.OpenForms)
   {
       if (f is HelpForm)
       {
           f.Focus();
           return;
       }
   }

   new help().Show();
}

编辑:更清楚地说,这允许用户随时关闭帮助,并且比保存对帮助窗口的引用更容易管理。没有什么需要清理的,也没有什么需要维护的。

票数 15
EN

Stack Overflow用户

发布于 2010-01-07 04:57:21

根据您想要管理的方式,您可以做一些事情:

当窗体在调用窗体中处于disposed

  • Manage状态时,
  1. 使用带有全局跟踪锁的Singleton pattern,如果窗体已经显示该窗体,则只需调用“”,但不显示它,这样您就可以管理单个引用,并根据需要显示它
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2018272

复制
相关文章
动态数组实现-C++
用链表实现的动态数组的插入、删除、查询等操作 头文件(array.h) #ifdef ARRAY_H #define ARRAY_H class DynamicArray { public: DynamicArray(int alen=10,int *aData=NULL,int aSize=10): m_alen(alen),m_aData(aData),m_aSize(aSize){}; ~DynamicArray(){}; DynamicArray(const DynamicArra
WindCoder
2018/09/19
2.4K0
C++中动态申请数组
动态申请一维数组 申请使用new,释放使用delete[] 可以通过数组名[下标]和*(数组名+下标)的方式访问数组
卡尔曼和玻尔兹曼谁曼
2019/01/22
1.9K0
动态数组
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/155195.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/06
9710
动态数组
VBA数组(六)动态数组
大家好,前面已经介绍过了如何声明数组、数组赋值、静态数组和数组函数等等知识点,本节主要讲解动态数组。
无言之月
2019/10/13
7.3K0
动态数组(指针与数组)
一开始未知数组长度,根据要求创建不同类型的指针,并且使用指针创建相应长度的数组,然后再完成不同的要求
叶茂林
2023/07/28
1390
C++随记(四)---动态数组vector
本文介绍了C++中的二维动态数组,包括vector<vector<int>>类型的定义、基本操作如向vector末尾添加元素、获取vector长度、访问vector中的元素、插入元素、删除元素、清空vector、向vector中插入另一个vector以及获取vector中元素个数的方法。
TeeyoHuang
2017/12/28
1.8K0
C++随记(四)---动态数组vector
asp动态数组
本文所说的 ASP 数组是指在 ASP 中以默认语言 VBScript 为语言的数组。
全栈程序员站长
2022/07/09
6.1K0
动态创建数组[通俗易懂]
使用运算符new也可以创建数组类型的对象,这时需要给出数组的结构说明。用new运算符动态创建一维数组的语法形式为: new 类型名【数组长度】; 其中数组长度指出了数组元素的个数,它可以是任何能够得到正整数值的表达式。 细节: 用new动态创建一维数组时,在方括号后仍然可以加小括号“()”,但小括号内不能带任何参数。是否加“()”的区别在于,不加“()”,则对数组每个元素的初始化,与执行“new T”时所进行初始化的方式相同;加“()”,则与执行“new T()”所进行初始化的方式相同。例如,如果这样动态生成一个整型数组: int *p=new int[10] (); 则可以方便地为动态创建的数组用0值初始化。 如果是用new建立的数组,用delete删除时所在指针名前面要加上“【】”,格式如下: delete[] 指针名;
全栈程序员站长
2022/08/15
3K0
C动态数组
例如:一开始有5个学生,后来增加到8个,再后来增加到15个。最后,减少到3个学生。
WuShF
2023/03/12
8600
C动态数组
solidity定长数组和动态数组
其中第二种情况未声明数组内容时,可通过直接通过push向数组中添加值,或初始化一个数组然后再赋值。
程序新视界
2019/08/14
2.8K0
【C++】动态开辟二维数组
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/116522.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/07
4080
【C++】动态开辟二维数组
动态数组和C++ std::vector详解
std::vector是C++的默认动态数组,其与array最大的区别在于vector的数组是动态的,即其大小可以在运行时更改。std::vector是封装动态数组的顺序容器,且该容器中元素的存取是连续的。
艰默
2023/09/05
6480
动态数组和C++ std::vector详解
封装数组之动态数组实现
前言:在此之前,我们封装的数组属于静态数组,也即数组空间固定长度,对于固定长度的数组当元素超过容量时会报数组空间不足。为了能更好的使用数组,我们来实现一个可以自动扩充容量的数组。
wfaceboss
2019/04/08
6650
封装数组之动态数组实现
C++ 创建动态二维数组
在C++中创建数组的时候需要声明数组的长度,在声明一个二维数组的参数时,则至少需要确认第二维的长度,否则就无法完成编译。 为什么呢,我们可以用一张图来表示c++二维数组在内存中的表示就理解了。
雪碧君
2023/02/15
8330
C++动态定义三维数组
 C++实验作业:动态创建三维数组,各维长度通过输入给定。 #include <bits/stdc++.h> using namespace std; int main() { int height, row, col; //依次为三维数组的高、行、列 cout << "请输入三维数组高,行,列 : "; cin >> height >> row >> col; int i, j, k; //动态定义三维数组 int ***p; p = new int**
喜欢ctrl的cxk
2022/05/07
9670
android动态添加数组中,Android动态数组「建议收藏」
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说android动态添加数组中,Android动态数组「建议收藏」,希望能够帮助大家进步!!!
Java架构师必看
2022/08/03
2K0
动态数组是啥
当小白抱着这个问题去问大佬的时候,80%的回答就是:动态数组就是可以变化长度的数组,就这么简单,没啥难度。
全栈程序员站长
2022/11/16
6510
如何实现动态数组
1.使用指针~~ 2.自己申请内存 例如:如第一块的代码,若想实现一个动态数组,必须写成二的部分,用完之后必须给free(); 必须加上头文件#include<malloc.h> 常用格式:
杨鹏伟
2020/09/11
8840
浅析变长数组(VLA)和动态数组
前天实训听见几位推免的大佬聊面试中出现了动态数组,而我们所学并没有涉及到动态数组,遂翻起了尘封已久的《C语言程序设计现代方法》以及《C Primer Plus》,果然大神们写书都很全面(厚),后悔当初没有认真拜读。
休辞醉倒
2019/07/23
2K0
c++中的动态数组和动态结构体、string类学习总结
大家周末好,今天给大家分享c++中的动态数组和动态结构体以及string类的学习总结,在今天写文章之前,给大家分享一个可以面试刷题的地方,如果大家平时没啥事情或者离面试时间比较久,可以尝试去牛客网里面去刷题,如下图所示:
用户6280468
2022/03/21
1.8K0
c++中的动态数组和动态结构体、string类学习总结

相似问题

将静态数组复制到动态数组c++

126

将静态数组复制到c++中的动态数组

410

将结构的动态数组复制到另一个结构的动态数组

21

C++中动态结构数组中的动态数组

13

C++“动态”数组

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文