c# winform中,单击关闭了窗体a,不是隐藏,timer tick事件发生,如何让a再显示出来 50
展开全部
1)首先,Timer不能在窗体a中。因为,如果Timer在窗体a上,当窗体a关闭后,Timer也将销毁,那就不可能发生Timer_Tick事件了。
2)要在Timer_Tick事件中再次打开已经关闭的a,一个简单的方法如下
public partial class A: Form
{
private static A instance = null;
//增加一个静态方法,显示窗体A
public static ShowWindow()
{
if(instance == null)
{
//创建并显示窗体A
instance = new A();
A.Show( );
}
else
{
//激活已经创建窗体,不需要再显示
A.Activate( );
}
}
//将构造函数改为private
private A()
{
InitializeComponent();
}
//重写OnClosed方法
protected override void OnClosed(EventArgs e)
{
//释放静态实例instance
instance = null;
base.OnClosed(e);
}
}
3)在Timer_Tick事件中
private void timer1_Tick(object sender, EventArgs e)
{
A.ShowWindow( );
}
展开全部
public partial class Form1 : Form
{
static Form1 __instance;
public static Form1 Instance
{
get
{
if (__instance == null)
{
__instance = new Form1();
}
return Form1.__instance;
}
}
System.Windows.Forms.Timer _timer;
Form1()
{
InitializeComponent();
_timer = new Timer();
_timer.Interval = 6000;
_timer.Tick += _timer_Tick;
_timer.Start();
}
void _timer_Tick(object sender, EventArgs e)
{
this.Show();
}
protected override void OnClosing(CancelEventArgs e)
{
e.Cancel = true;
this.Hide();
}
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(Form1.Instance);
}
{
static Form1 __instance;
public static Form1 Instance
{
get
{
if (__instance == null)
{
__instance = new Form1();
}
return Form1.__instance;
}
}
System.Windows.Forms.Timer _timer;
Form1()
{
InitializeComponent();
_timer = new Timer();
_timer.Interval = 6000;
_timer.Tick += _timer_Tick;
_timer.Start();
}
void _timer_Tick(object sender, EventArgs e)
{
this.Show();
}
protected override void OnClosing(CancelEventArgs e)
{
e.Cancel = true;
this.Hide();
}
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(Form1.Instance);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a A =new a();
a.show()
a.show()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
关闭了的话只能重新实例化一个了,无法将关闭的再显示,因为已经释放了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询