本文介绍了在c#中的第一个winform中检测第二个winform窗口状态的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个胜利形式,我使用了最小化的第二个胜利形式



 这个 .WindowState = FormWindowState.Minimized 
this .ShowInTaskbar = true ;

并且我在第一个winform中有计时器,每17秒设置一次,当计时器的下一个周期在第一个winform中击中事件时,我试图获得第二个win-form窗口状态

 frmPopup objPopup =  new  frmPopup( false ); 
MessageBox.Show( + objPopup.WindowState + );







Form_2_Code:



  private   void  Form2_SizeChanged(对象发​​件人,EventArgs e)
{
if (WindowState == FormWindowState.Minimized)
{
isMinimized = 1 ;
}
}
私有 void Minimize_Click( object sender,EventArgs e)
{
this .Resize - = new EventHandler(Form2_SizeChanged);
this .DialogResult = System.Windows.Forms.DialogResult.Cancel;
this .WindowState = FormWindowState.Minimized;
this .ShowInTaskbar = true ;
this .Resize + = new EventHandler(Form2_SizeChanged);
}

private void btnOK_Click( object sender,EventArgs e)
{
Process [] processes = Process.GetProcessesByName( XXXX);
if (processes.Length!= 0
{
lblWarning.Visible = true ;
}
else
.DialogResult = System.Windows。 Forms.DialogResult.OK;
}

private void btnCancel_Click( object sender,EventArgs e)
{
this .DialogResult = System.Windows.Forms.DialogResult。取消;
}



Form_1_code:



frmPopup objPopup = new frmPopup(false) ; //全球声明



 私人  void  timer3_Tick( object  sender,EventArgs e)
{
Process [] process1 = Process.GetProcessesByName( XXXX);
int iWindowstate = objPopup.isMinimized; // objPopup是Form2的对象,在Form1中声明为全局
if ((iWindowstate == 0 && process1.Length == 0 )||(iWindowstate == 1 && process1.Length == 0 ))
{
if (objPopup.ShowDialog()== System.Windows.Forms.DialogResult.OK)
{
// dialog.Result.ok
}
}
timer3.Enabled = true ;
}





我的问题:如果我最小化第二个winform我需要被放置在任务栏中尽管我可以能够获得第二个winform的windowstate我需要将第二个winform放置在任务栏中,而不是在最小化状态的systemsTray中但它消失了

解决方案


这篇关于在c#中的第一个winform中检测第二个winform窗口状态的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-14 22:59