自定义窗体最大化无法铺满全屏
我做的自定义窗体,在运行的时候用代码重绘掉了系统的边框和标题栏,在我最大化的时候为什么不能铺满全屏呢?自定义窗体 最大化 全屏 --------------------编程问答-------------------- 还不如做成没有边框的窗体,然后绘制这个窗体的顶部边框模拟标题栏呢。 --------------------编程问答-------------------- 没试过,还真不知道 --------------------编程问答-------------------- 因为你系统标题栏还是存在的,只是变透明了而已,他还是要占位置。 --------------------编程问答--------------------
没边框的窗体好多消息都没有了,比如最小化的时候有系统效果等。 --------------------编程问答--------------------
是啊,那块的高度正好是标题栏的高度,请问要怎么解决呢? --------------------编程问答--------------------
public Form10()
{
InitializeComponent();
this.FormBorderStyle = FormBorderStyle.None;
this.Shown += new EventHandler(Form10_Shown);
}
void Form10_Shown(object sender, EventArgs e)
{
Application.DoEvents();
this.Location = new Point(0, 0);
this.Width = Screen.PrimaryScreen.WorkingArea.Width;
this.Height = Screen.PrimaryScreen.WorkingArea.Height;
this.PreviewKeyDown += new PreviewKeyDownEventHandler(Form10_PreviewKeyDown);
}
void Form10_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (e.KeyValue == 27)//Esc键
{
this.Close();
}
}
你这样就是最大化窗体了,而且没有标题栏,至于你要自己怎么写标题栏,那就加处panel,拉图片进去就行了。 --------------------编程问答-------------------- 我所了解的只能隐藏标题栏和边框,标题栏的功能可以自己重写。 --------------------编程问答-------------------- 如果是追求美观的界面建议用WPF取代winform --------------------编程问答-------------------- FormBorderStyle.None --------------------编程问答-------------------- 用第三方皮肤吧 呵呵 --------------------编程问答-------------------- 1.获取当前屏幕显示区域大小,不包含任务栏. 即任务栏以上的宽度和高度
Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height
2.获取当前屏幕大小,包括任务栏.
Screen.PrimaryScreen.Bounds.Width ,Screen.PrimaryScreen.Bounds.Height
将窗体高和宽设为屏幕的高度和宽度 --------------------编程问答-------------------- C#高仿QQ2013通讯DEMO-点击下载
C#精仿360安全卫士-点击下载 --------------------编程问答--------------------
public Form10()
{
InitializeComponent();
this.FormBorderStyle = FormBorderStyle.None;
this.Shown += new EventHandler(Form10_Shown);
}
void Form10_Shown(object sender, EventArgs e)
{
Application.DoEvents();
this.Location = new Point(0, 0);
this.Width = Screen.PrimaryScreen.WorkingArea.Width;
this.Height = Screen.PrimaryScreen.WorkingArea.Height;
this.PreviewKeyDown += new PreviewKeyDownEventHandler(Form10_PreviewKeyDown);
}
void Form10_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (e.KeyValue == 27)//Esc键
{
this.Close();
}
}
你这样就是最大化窗体了,而且没有标题栏,至于你要自己怎么写标题栏,那就加处panel,拉图片进去就行了。
你这个最早之前是这样做的,其实就是把边框设置为NONE 大部分的消息自己处理,但是缺少了Windows窗体特有的一些效果,现在已经不打算这样做了,不过很感谢你码了这么多代码。 --------------------编程问答--------------------
我所了解的只能隐藏标题栏和边框,标题栏的功能可以自己重写。
因为你系统标题栏还是存在的,只是变透明了而已,他还是要占位置。
是啊,那块的高度正好是标题栏的高度,请问要怎么解决呢?
最近正在重新画非客户区的东西... --------------------编程问答-------------------- 那么说的话我认为没办法,这个是机制问题,你可以自定义事件试试 --------------------编程问答-------------------- --------------------编程问答-------------------- 看是不是上面一部分也是这个form的
估计你绘制的时候 不是从 0,0 开始
所以导致上面有部分是空的
补充:.NET技术 , C#