WPF无边框窗体,点击任务栏无法最小化

问题描述

WPF设置成无边框窗体后,点击任务栏无法最小化.在Winform中可以用以下方式解决这个问题.[DllImport("user32.dll",EntryPoint="GetWindowLong",CharSet=CharSet.Auto)]publicstaticexternintGetWindowLong(HandleRefhWnd,intnIndex);[DllImport("user32.dll",EntryPoint="SetWindowLong",CharSet=CharSet.Auto)]publicstaticexternIntPtrSetWindowLong(HandleRefhWnd,intnIndex,intdwNewLong);protectedoverrideCreateParamsCreateParams{get{constintWS_MINIMIZEBOX=0x00020000;//Winuser.h中定义CreateParamscp=base.CreateParams;cp.Style=cp.Style|WS_MINIMIZEBOX;//允许最小化操作returncp;}}

但是在WPF中应该怎么改才能点击任务栏,窗体就最小化,

解决方案

解决方案二:
UseResizeMode="CanMinimize".Thiswillallowyoutominimizetothetaskbar.
解决方案三:
引用楼主HACKWSN的回复:

WPF设置成无边框窗体后,点击任务栏无法最小化.在Winform中可以用以下方式解决这个问题.[DllImport("user32.dll",EntryPoint="GetWindowLong",CharSet=CharSet.Auto)]publicstaticexternintGetWindowLong(HandleRefhWnd,intnIndex);[DllImport("user32.dll",EntryPoint="SetWindowLong",CharSet=CharSet.Auto)]publicstaticexternIntPtrSetWindowLong(HandleRefhWnd,intnIndex,intdwNewLong);protectedoverrideCreateParamsCreateParams{get{constintWS_MINIMIZEBOX=0x00020000;//Winuser.h中定义CreateParamscp=base.CreateParams;cp.Style=cp.Style|WS_MINIMIZEBOX;//允许最小化操作returncp;}}

但是在WPF中应该怎么改才能点击任务栏,窗体就最小化,

可以了,非常感谢您.要是早遇到您,就不用腾到半夜了.
解决方案四:
引用楼主HACKWSN的回复:

WPF设置成无边框窗体后,点击任务栏无法最小化.在Winform中可以用以下方式解决这个问题.[DllImport("user32.dll",EntryPoint="GetWindowLong",CharSet=CharSet.Auto)]publicstaticexternintGetWindowLong(HandleRefhWnd,intnIndex);[DllImport("user32.dll",EntryPoint="SetWindowLong",CharSet=CharSet.Auto)]publicstaticexternIntPtrSetWindowLong(HandleRefhWnd,intnIndex,intdwNewLong);protectedoverrideCreateParamsCreateParams{get{constintWS_MINIMIZEBOX=0x00020000;//Winuser.h中定义CreateParamscp=base.CreateParams;cp.Style=cp.Style|WS_MINIMIZEBOX;//允许最小化操作returncp;}}

但是在WPF中应该怎么改才能点击任务栏,窗体就最小化,

还想再请教你一个问题,ComboBox怎么做到水印功能呢?XML如何写?
解决方案五:
引用3楼HACKWSN的回复:

Quote: 引用楼主HACKWSN的回复:
WPF设置成无边框窗体后,点击任务栏无法最小化.在Winform中可以用以下方式解决这个问题.[DllImport("user32.dll",EntryPoint="GetWindowLong",CharSet=CharSet.Auto)]publicstaticexternintGetWindowLong(HandleRefhWnd,intnIndex);[DllImport("user32.dll",EntryPoint="SetWindowLong",CharSet=CharSet.Auto)]publicstaticexternIntPtrSetWindowLong(HandleRefhWnd,intnIndex,intdwNewLong);protectedoverrideCreateParamsCreateParams{get{constintWS_MINIMIZEBOX=0x00020000;//Winuser.h中定义CreateParamscp=base.CreateParams;cp.Style=cp.Style|WS_MINIMIZEBOX;//允许最小化操作returncp;}}

但是在WPF中应该怎么改才能点击任务栏,窗体就最小化,

还想再请教你一个问题,ComboBox怎么做到水印功能呢?XML如何写?

这个从头讲有点复杂了,你要是能找本书看看如何定制ControlTemplate,事情就变得很简单了。可以参考我的博客,讲如何给textbox加水印:http://blog.csdn.net/gentle_wolf/article/details/7944959
解决方案六:
ControlTemplate是可以解决一切问题的,试试看,其实一点也不麻烦
解决方案七:
引用楼主HACKWSN的回复:

WPF设置成无边框窗体后,点击任务栏无法最小化.在Winform中可以用以下方式解决这个问题.[DllImport("user32.dll",EntryPoint="GetWindowLong",CharSet=CharSet.Auto)]publicstaticexternintGetWindowLong(HandleRefhWnd,intnIndex);[DllImport("user32.dll",EntryPoint="SetWindowLong",CharSet=CharSet.Auto)]publicstaticexternIntPtrSetWindowLong(HandleRefhWnd,intnIndex,intdwNewLong);protectedoverrideCreateParamsCreateParams{get{constintWS_MINIMIZEBOX=0x00020000;//Winuser.h中定义CreateParamscp=base.CreateParams;cp.Style=cp.Style|WS_MINIMIZEBOX;//允许最小化操作returncp;}}

但是在WPF中应该怎么改才能点击任务栏,窗体就最小化,

引用1楼gentle_wolf的回复:

UseResizeMode="CanMinimize".Thiswillallowyoutominimizetothetaskbar.

[code=csharp]<!--鼠标移入移出--><TriggerProperty="IsMouseOver"Value="True"><Trigger.EnterActions><BeginStoryboard><Storyboard><DoubleAnimationTo="30"Duration="0:0:0.2"Storyboard.TargetName="back"Storyboard.TargetProperty="(UIElement.Effect).(DropShadowEffect.BlurRadius)"/><ColorAnimationTo="#AFFF"BeginTime="0:0:0.2"Duration="0:0:0.2"Storyboard.TargetName="fore"Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[0].(GradientStop.Color)"/><ColorAnimationTo="#3FFF"BeginTime="0:0:0.2"Duration="0:0:0.2"Storyboard.TargetName="fore"Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)"/></Storyboard></BeginStoryboard></Trigger.EnterActions><Trigger.ExitActions><BeginStoryboard><Storyboard><DoubleAnimationDuration="0:0:0.2"Storyboard.TargetName="back"Storyboard.TargetProperty="(UIElement.Effect).(DropShadowEffect.BlurRadius)"/><ColorAnimationDuration="0:0:0.2"Storyboard.TargetName="fore"Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[0].(GradientStop.Color)"/><ColorAnimationDuration="0:0:0.2"Storyboard.TargetName="fore"Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)"/></Storyboard></BeginStoryboard></Trigger.ExitActions></Trigger>

[/code]这是鼠标移入移出的触发器,我想加个属性触发器,当按钮Background的值为Red时,循环这移入移出达到闪烁效果,这XAML怎么写呢?有空的话再帮个忙.

时间: 2024-11-03 11:41:53

WPF无边框窗体,点击任务栏无法最小化的相关文章

C#实现无标题栏窗体点击任务栏图标正常最小化或还原的解决方法

对于无标题栏窗体,也就是FormBorderStyle等于System.Windows.Forms.FormBorderStyle.None的窗体,点击任务栏图标的时候,是不能象标准窗体那样最小化或还原的.把下面的代码加到你的Form实现类中,即可实现点击任务栏图标正常最小化或还原窗体.   [c-sharp] view plain copy   protected override CreateParams CreateParams   {       get       {         

无边框窗体,窗体鼠标事件被禁止,求解决办法。

问题描述 protectedoverridevoidWndProc(refMessagem){constintWM_NCHITTEST=0x84;constintHTCLIENT=0x01;constintHTCAPTION=0x02;constintWM_SYSCOMMAND=0x112;constintSC_MAXMIZE=0xF030;constintWM_NCLBUTTONDBLCLK=0xA3;switch(m.Msg){case0x4e:case0xd:case0xe:case0x1

C#中实现拖动无边框窗体Form

拖动无边框窗体Form至桌面任何位置 首先建一个Windows应用程序 将Form1的 FormBorderStyle属性设置为Noe   创建控件panel1放在标题栏位置   代码         Point mouseOff;//鼠标移动位置变量         bool leftFlag;//标签是否为左键         private void panel1_MouseDown(object sender, MouseEventArgs e)        {            

c#中无边框窗体改变大小?

问题描述 我是参考这里http://www.microsoft.com/china/community/Column/60.mspx我做的也是一个无边框的窗体现在已经实现了向右拉伸功能.方法(获得当前的鼠标横坐标(mousemove)FORM.WITCH=鼠标横坐标-location.X)如何实现向左拉伸?我思考的方法(FORM.WITCH=this.Right-当前鼠标横坐标,但是表现出来时窗体左边框没动右边框在增加缩小)不知道我是不是写错了.或者要实现无边框窗体的伸缩大小有没有另外的好方法?

winform 无边框 窗体基本功能 拖动和系统右键菜单冲突

问题描述 usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Runtime.InteropServices;usingRightMenuItem;namespaceClientFrom{pu

vb无边框窗体-[VB 6.0]无边框窗体用[JS]实现左键+拖动=改变窗体大小

问题描述 [VB 6.0]无边框窗体用[JS]实现左键+拖动=改变窗体大小 设想:Form1(绝对的无边框,不是有边框去掉标题栏)中只有webbrowser一个控件,webbrowser与Form1大小一致. 求助:Form1会被webbrowser控件完全覆盖,Form1的鼠标事件不会因鼠标操作而触发,而webbrowser控件本身没有鼠标事件[有没有不讨论,就当没有]这种情况下如何实现左键+拖动=改变窗口大小,可否在webbrowser-document中建一与Form1同样大小的DIV,用

winform中如何处理无边框窗体的缩放和托动

在winform经常用到无边框的窗体,原因就是想使自己的程序界面完全的自定义,网上也有过不少的相关资料 今天我发了一下的午的时间整理了一下.觉得还不错,贴出来看看. 为了提高托动的缩放的效率,减少系统开销,一般软件都用支持只显示窗体四周的虚线的方法,这也是windows默认的设置 首先看下其它软件的窗体托动,先说QQ2009吧,QQ2009的主窗体在托动时如果在屏幕上来回快速托动,等停下来时你会发现,很有可能鼠标现在在窗体的位置已经不是按下的位置了.再说酷我音乐盒.鼠标在托动或缩放窗体时,如果鼠

vb.net如何在win7下不开启阴影效果,如何实现无边框窗体阴影

问题描述 vb.net如何在win7下不开启阴影效果,如何实现无边框阴影,求高手给代码,谢谢各位了 解决方案 解决方案二:WPF整

vb.net 无边框窗体,阴影不完整

问题描述 SetClassLong(Me.Handle,GCL_STYLE,GetClassLong(Me.Handle,GCL_STYLE)OrCS_DROPSHADOW)现在调用API实现了右边框和下边框有阴影,如何让左边框和顶边框也实现由阴影的效果请赐教,谢谢!