| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7283 人关注过本帖
标题:怎样使当点击多次按钮后,弹出的窗体始终只有一个???
只看楼主 加入收藏
lelejiayou
Rank: 1
来 自:宁海
等 级:新手上路
帖 子:73
专家分:0
注 册:2013-3-20
结帖率:73.68%
收藏
已结贴  问题点数:10 回复次数:10 
怎样使当点击多次按钮后,弹出的窗体始终只有一个???
点击按钮,,只出现一个窗体,而不是点几次出现几个窗体,,怎么弄??试过Visible,没用。。。
搜索更多相关主题的帖子: 按钮 
2013-04-18 09:59
shangsharon
Rank: 9Rank: 9Rank: 9
来 自:湖北武汉
等 级:蜘蛛侠
威 望:7
帖 子:221
专家分:1261
注 册:2012-3-25
收藏
得分:2 
//定义一个form的静态全局变量
static Form f;
//按钮的点击事件
{
if(f==null)
{
f=new Form1();
}
f.Show();
}
2013-04-18 10:36
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:2 
被打开窗体引用为全局,例如Form1打开Form2
Form1中,Form2的引用为全局 Form2 f2 = null;
Form1的某个方法中
if(f2 == null || f2.IsDisposed)
{
   f2 = new Form2();
}
if(!f2.Created)
{
    f2.Show();
}
2013-04-18 14:03
party620
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:696
专家分:2521
注 册:2013-1-31
收藏
得分:2 
学习
2013-04-18 15:47
mangix
Rank: 2
等 级:论坛游民
帖 子:5
专家分:34
注 册:2013-4-5
收藏
得分:2 
当然,你也可以定义一个 bool 变量来判断这个事情。例如:

bool formCreated = false;
private void button1_Click(object sender, EventArgs e)
{
    if (!formCreated)
    {
       Form2 f = new Form2();
       formCreated = true;
     }
    f.Show();
 }
2013-04-18 22:57
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:0 
以下是引用mangix在2013-4-18 22:57:50的发言:

当然,你也可以定义一个 bool 变量来判断这个事情。例如:

bool formCreated = false;
private void button1_Click(object sender, EventArgs e)
{
    if (!formCreated)
    {
       Form2 f = new Form2();
       formCreated = true;
     }
    f.Show();
 }

若是Form2窗体关闭后,再次点击按钮打开Form2窗体,这样就有问题了
另外还有个手误吧, f引用定义在if里面,在if外面取不到的,编译会报错
2013-04-19 00:31
moridiansha
Rank: 6Rank: 6
来 自:承德
等 级:侠之大者
威 望:4
帖 子:254
专家分:417
注 册:2009-10-21
收藏
得分:2 
建议楼主参考设计模式中的 单例模式,这个是专门处理这个问题的

www.qysy.tk
2013-04-19 09:20
mangix
Rank: 2
等 级:论坛游民
帖 子:5
专家分:34
注 册:2013-4-5
收藏
得分:0 
回复 6楼 yhlvht
谢谢提醒。这个方法确实是错误的,我该严谨些。
2013-04-19 23:39
ming_cl
Rank: 2
等 级:论坛游民
威 望:1
帖 子:6
专家分:11
注 册:2013-4-21
收藏
得分:2 
private bool isOpen = false;
private void OnClick()
{
    if(!isOpen)
    {
        isOpen = true;
        ***
    }
}
2013-04-22 16:04
tpjln
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-12-10
收藏
得分:0 
单例模式 Singleton Pattern

using System;
using System.Collections.Generic;
using
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace SingletonPattern
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {           
            Form f2 = Singleton.getInstance();
            f2.Text = "Form2";
            f2.Show();           
        }
    }

    public class Singleton
    {
        private static Form instance = null;  

        public static  Form getInstance()
        {
            if(instance == null)
            {
                 instance = new Form();            
            }
            return instance;
        }
   }
}

希望能帮到你
2013-12-10 22:14
快速回复:怎样使当点击多次按钮后,弹出的窗体始终只有一个???
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039896 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved