日期:2014-05-19  浏览次数:20877 次

如何防止我的窗口被最小化
我把上面的任务条给去了,不显示 最大化,最小化,关闭 按钮了

但是点击 快速启动栏里的 显示桌面和  按 窗口键+D  键 的时候,我的窗口还是被最小化了

如果实现 让这两种方式 也都不能把我的窗口最小化 的功能?
就像  QQ的 登录 窗口,它就是 这样,最小化不了
谢谢各位大哥了

------解决方案--------------------
import java.awt. * ;
import java.awt.event. * ;
public class MyFrame extends Frame {
{
public MyFrame() {
setSize( 500 , 400 );
setResizable( false );
this .addWindowStateListener( new WindowStateListener() { // 状态监听器
public void windowStateChanged(WindowEvent e) {
if (getState() == 1 ) { // 最小化状态
setState( 0 ); // 切换成正常状态
}
}
} );
}

public static void main(String[] args) {
new MyFrame().setVisible( true );
}

}

//定义个固定窗口
------解决方案--------------------
在窗体的事件中似乎是做不到。
可以放一个Timer控件,然后加入下面的代码
private void timer1_Tick(object sender, System.EventArgs e)
{
if (this.WindowState==FormWindowState.Minimized)
{
this.WindowState=FormWindowState.Normal;
}
}
------解决方案--------------------
不要用timer,那样会一直判断的
可以在窗口的Resize事件里面写楼上的那段代码
------解决方案--------------------
在窗体的Resize事件加下面代码:

if (this.WindowState==FormWindowState.Minimized)
{
this.WindowState=FormWindowState.Normal;
}
------解决方案--------------------
拦截此Form的Windows消息:

protected override void WndProc(ref Message m)
{
const int WM_SYSCOMMAND = 0x0112;
const int SC_MINIMIZE = 0xF020;

switch ( m.Msg )
{
case ( WM_SYSCOMMAND ):
if ((int)m.WParam == SC_MINIMIZE )
{
//System.Diagnostics.Trace.WriteLine( "Minimizing the form now. ");
}
else
{
base.WndProc (ref m);
}
break;
default:
base.WndProc (ref m);
break;
}
------解决方案--------------------
if (this.WindowState==FormWindowState.Minimized)
{
this.WindowState=FormWindowState.Normal;
TopMost=True;
}

 这样就可以了。
------解决方案--------------------
原来QQ登陆窗口也没有做特殊的处理,就是一个顶层窗口而已。
private void Form1_Load(object sender, System.EventArgs e)
{
this.TopMost = true;
}

private void Form1_Resize(object sender, System.EventArgs e)
{
this.WindowState=FormWindowState.Normal;
}