WinForm中,如何去掉最大化按钮,而保留最小化和关闭按钮! 如题:就是要去掉最大化按钮,儿不是只是单纯的不可用!如果重画窗体标题栏,请教如何重画! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先做个标志RemoveMenu GetSystemMenu form 的window style的属性中 maximizeBox 改为false 我也想到过用RemoveMenu()方法,不过我没有具体的实现过这个方法,可不可以贴上具体的实现代码呢?谢谢 自己重绘比较麻烦得在消息处理里面弄我一般用简单点的办法,使用radcontrol的radtitlebar 或devexpress的form,这两个东西都有自己的皮肤编辑器,直接把皮肤改掉就好了 form 的属性中 maximizeBox 改为false 最大化按钮就没了 MaximizeBox = false 不就可以啦吗 那么是不是需要重新画窗体标题栏的Menu呢? 楼主把FormBorderStyle=FormBorderStyle.None然后自己添加menu,最小化,最大化button键就好了 好像只能重绘。最简单的:去掉窗体的标题栏。再用PANEL做一个标题栏。想做成什么样子都行。 按照你的意思是,把原先的menu不显示,然后自己写menu上去么?也就是等于重新画menu了? 将窗口的FormBorderStyle设置为:none再用PANEL做一个标题栏。这是最简单的方法。 哦... private void Form1_SizeChanged(object sender, EventArgs e) { if (this.WindowState == FormWindowState.Minimized) { this.ShowInTaskbar = false; this.notifyIcon1.Visible = true; } if (this.WindowState == FormWindowState.Maximized) this.WindowState = FormWindowState.Normal; } 不需要你重写1.FormBorderStyle=FormBorderStyle.None 2.从工具箱拖一个menuStrip到窗体上,3.拖2个button到menu上,调整大小设置背景图案4.添加最小化,关闭的单击事件 [DllImport("USER32.DLL")] public static extern int GetSystemMenu(int hwnd, int bRevert); [DllImport("USER32.DLL")] public static extern int RemoveMenu(int hMenu, int nPosition, int wFlags); [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)] public static extern IntPtr GetActiveWindow(); [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, int lParam); const int MF_REMOVE = 0x1000; const int SC_RESTORE = 0xF120; //还原 const int SC_MOVE = 0xF010; //移动 const int SC_SIZE = 0xF000; //大小 const int SC_MINIMIZE = 0xF020; //最小化 const int SC_MAXIMIZE = 0xF030; //最大化 const int SC_CLOSE = 0xF060; //关闭 private void Form1_Load(object sender, EventArgs e) { int hMenu; hMenu = GetSystemMenu(this.Handle.ToInt32(), 0); RemoveMenu(hMenu, SC_MAXIMIZE , MF_REMOVE); } 我以为用RemoveMenu和GetSystemMenu就行了,结果不行啊,再查查 private void Form1_Load(object sender, EventArgs e) { this.SetDesktopLocation(280, 200); MaximizeBox = false; MinimizeBox = false; //C#中去掉最大化与最小化的按钮 } SizableToolWindow类型改为FixedToolWindow或SizableToolWindow窗体样式 1 先把窗体做好,然后把标题栏截图 截你想要的2 FormBorderStyle=FormBorderStyle.None 不要标题栏3 放几个PictureBox 把图片放上去,再在picturebox的Click写代码 不跟那一样 只是鼠标不能拖动窗体了,要自己写鼠标拖动窗体的事件 form1.MaximizeBox = false;或者在Form属性框MaximizeBox中设置:False; window style的属性中 maximizeBox 改为false 非常谢谢,不过我已经在题目中说明了,最去掉最大化,而留下最小化和关闭按钮,MaximizeBox 属性只能让最大化按钮被禁用,而不是去掉 这个方法还是要用到GetSystemMenu()方法和 RemoveMenu()方法,我试过这个方法了 好像不能去掉最大化按钮,只能让最大化按钮点击了,没效果而已 干脆,先弄成fixToolwindow,然后在tilte栏里加一个按钮,实现自己的消息就成了实际上本来上面都给了简单的方法了(将窗口的FormBorderStyle设置为:none 再用PANEL做一个标题栏 或者是radform,devexpressform)你偏要用api,Gdi+这种不容易实现的方式。星星们当然乐意做api,gdi+,那是表现技术和检测自己的水平,你不必啊,啥东西简单易用就用啥好了 要知道改变系统默认的是很难办的事情,因为他没有句柄(虽然看起来是3个按钮,但实际那三个东西根本就没有句柄,完全是gdi+和消息处理实现的) form 的window style的属性中 maximizeBox 改为false 我现在也是用自己做菜单的方法,自己画菜单上去,然后自己写事件,这个是目前的实现当然,以学习为目的的话,如果有哪位高手能用API,GDI+来实现,希望能给出一个能够实现的代码实例 Gridview删除行记录 C#索引器问题························ 做一个网址收藏夹,用XML存储 飞信新版本竟然改用c++开发了,难道意味着c#在桌面上还是吃不开? COM对象的释放问题 datatable 某行删除后回复 考试题目:ADO.NET如何用代码实现表格的合成???(题目有图片) 参加竞赛 项目没有获奖 郁闷 散分100 两个程序同时开不同串口,通信干扰,怎么解决? 请问没有DataSource如何使用DataGrid? 关于C#中类的实例化问题 dataGridView的单元格可不可以设为不能选中?
先做个标志
RemoveMenu
GetSystemMenu
我也想到过用RemoveMenu()方法,不过我没有具体的实现过这个方法,可不可以贴上具体的实现代码呢?谢谢
我一般用简单点的办法,使用radcontrol的radtitlebar 或devexpress的form,这两个东西都有自己的皮肤编辑器,直接把皮肤改掉就好了
form 的属性中 maximizeBox 改为false 最大化按钮就没了
那么是不是需要重新画窗体标题栏的Menu呢?
然后自己添加menu,最小化,最大化button键就好了
最简单的:
去掉窗体的标题栏。
再用PANEL做一个标题栏。想做成什么样子都行。
按照你的意思是,把原先的menu不显示,然后自己写menu上去么?也就是等于重新画menu了?
再用PANEL做一个标题栏。这是最简单的方法。
private void Form1_SizeChanged(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
this.ShowInTaskbar = false;
this.notifyIcon1.Visible = true;
} if (this.WindowState == FormWindowState.Maximized)
this.WindowState = FormWindowState.Normal;
}
2.从工具箱拖一个menuStrip到窗体上,
3.拖2个button到menu上,调整大小设置背景图案
4.添加最小化,关闭的单击事件
[DllImport("USER32.DLL")]
public static extern int GetSystemMenu(int hwnd, int bRevert); [DllImport("USER32.DLL")]
public static extern int RemoveMenu(int hMenu, int nPosition, int wFlags); [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern IntPtr GetActiveWindow();
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, int lParam);
const int MF_REMOVE = 0x1000; const int SC_RESTORE = 0xF120; //还原
const int SC_MOVE = 0xF010; //移动
const int SC_SIZE = 0xF000; //大小
const int SC_MINIMIZE = 0xF020; //最小化
const int SC_MAXIMIZE = 0xF030; //最大化
const int SC_CLOSE = 0xF060; //关闭 private void Form1_Load(object sender, EventArgs e)
{
int hMenu;
hMenu = GetSystemMenu(this.Handle.ToInt32(), 0);
RemoveMenu(hMenu, SC_MAXIMIZE , MF_REMOVE);
}
{
this.SetDesktopLocation(280, 200);
MaximizeBox = false;
MinimizeBox = false;
//C#中去掉最大化与最小化的按钮
}
2 FormBorderStyle=FormBorderStyle.None 不要标题栏
3 放几个PictureBox 把图片放上去,再在picturebox的Click写代码 不跟那一样 只是鼠标不能拖动窗体了,要自己写鼠标拖动窗体的事件
或者在Form属性框MaximizeBox中设置:False;
我现在也是用自己做菜单的方法,自己画菜单上去,然后自己写事件,这个是目前的实现
当然,以学习为目的的话,如果有哪位高手能用API,GDI+来实现,希望能给出一个能够实现的代码实例