【转】Winform 去掉 最大化 最小化 关闭按钮(不是关闭按钮变灰)终极解决办法

不墨迹, 如图 :


网上 看了,好多 给的 答案 乱码七糟,都是扯淡,于是乎 自己 写,代码如下:
窗体的大小暂时设置为:(598, 362) 涂红的数据根据你的窗体大小改动

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
using System.Runtime.InteropServices;

namespace WinDemo
{
    public partial class Form5 : Form
    {
        public Form5()
        {
            InitializeComponent();
        }

/// <summary>
        /// Button 按钮重绘事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Paint(object sender, PaintEventArgs e)
        {
            GraphicsPath myPath = new GraphicsPath();
            Rectangle rect = new Rectangle(0,0,574,362);//后面2个数据调整窗体大小
            myPath.AddRectangle(rect);
            this.Region = new Region(myPath);
        }

[DllImport("user32.dll")]
        static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);

[DllImport("User32.dll")]

private static extern IntPtr GetWindowDC(IntPtr hWnd);

protected override void WndProc(ref System.Windows.Forms.Message m)
        {
            const int WM_NCPAINT = 0x85;
            base.WndProc(ref m);

if (m.Msg == WM_NCPAINT)
            {

IntPtr hdc = GetWindowDC(m.HWnd);
                if ((int)hdc != 0)
                {
                    Graphics g = Graphics.FromHdc(hdc);
                    Pen pen1 = new Pen(Color.FromArgb(64,64,64));
                    Pen pen2 = new Pen(Color.FromArgb(128, 128, 128));
                    Pen pen3 = new Pen(Color.FromArgb(212, 208, 200));
                    g.DrawLine(pen1, 573, 0, 573, 360);//最外边
                    g.DrawLine(pen2, 572, 1, 572, 359);//最外边第二条白色
                    g.DrawLine(pen3, 571, 2, 571, 359);
                    g.DrawLine(pen3, 571, 2, 571, 359);
                    g.Flush();
                    ReleaseDC(m.HWnd, hdc);
                }
            }
        }
        private void Form5_MouseCaptureChanged(object sender, EventArgs e)
        {
            Graphics g = this.CreateGraphics();
            Pen pen1 = new Pen(Color.FromArgb(64, 64, 64));
            Pen pen2 = new Pen(Color.FromArgb(128, 128, 128));
            Pen pen3 = new Pen(Color.FromArgb(212, 208, 200));
            g.DrawLine(pen1, 573, 0, 573, 360);//最外边
            g.DrawLine(pen2, 572, 1, 572, 359);//最外边第二条白色
            g.DrawLine(pen3, 571, 2, 571, 359);
            g.DrawLine(pen3, 571, 2, 571, 359);
            g.Flush();
        }
}
}

Source Code : http://download.csdn.net/detail/zydcomputers/4055787

时间: 2024-10-06 03:48:01

【转】Winform 去掉 最大化 最小化 关闭按钮(不是关闭按钮变灰)终极解决办法的相关文章

Winform 去掉 最大化 最小化 关闭按钮(不是关闭按钮变灰)终极解决办法

不墨迹, 如图 : 网上 看了,好多 给的 答案 乱码七糟,都是扯淡,于是乎 自己 写,代码如下:窗体的大小暂时设置为:(598, 362) 涂红的数据根据你的窗体大小改动 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using S

CentOS最小化安装后AR8151网卡驱动未安装解决办法

最近拿来一台PC,12年的时候安装的CentOS6.2(x64),那个时候使用的是外置网卡,最小化安装系统时,主板自带网卡没有显示出来也就没注意,但是最近需要用到双网卡,就郁闷了.于是发生了下面一系列问题. 1.lspci命令没有 遇到问题: 在最小化安装的centos6.X系统中,使用lspci命令查看硬件信息,提示找不到命令:command not found. [[email protected] netperf-2.6.0]# lspci -bash: lspci: command no

【转】ubuntu 12.04 LTS将关闭最大化最小化移动到右上角

原文网址:http://www.4byte.cn/learning/114801.html ubuntu 12.04 LTS将关闭最大化最小化移动到右上角 还是按下“ALT +F2”组合键,输入gconf-editor并回车运行. www.4byte.cn (如果此时没有运行,则说明你需要安装gconf-editor,打开终端输入sudo apt-get install gconf-editor回车运行,等待安装完毕就行了.) 这时会打开一个配置编辑器,在左侧一次展开“apps/metacity

Q窗口操作函数(窗口最大化,全屏,隐藏最大化最小化按钮)

//Qt主窗口没有最小化,最大化按钮且最大化显示  int main(int argc, char *argv[]) { QApplication a(argc, argv); TestQtForWinCE w; w.setWindowFlags(w.windowFlags()& ~Qt::WindowMaximizeButtonHint& ~Qt::WindowMinimizeButtonHint); w.showMaximized(); return a.exec(); } 这里的&q

WPF 最大化最小化窗口

public static void FullOrMin(this Window window)        {            //如果是全屏,则最小化            if (window.WindowState == WindowState.Maximized)            {                window.Topmost = false;                window.WindowState = WindowState.Normal; 

electron 的窗口设置最大化 最小化

/** * Created by Administrator on 2016/11/23. * 页面对窗口的一些操作封装,用于渲染进程 */ "use strict"; const Common = require('../../window/common.js'); const { ipcRenderer, remote } = require('electron'); const WinReg = require('winreg'); const RUN_LOCATION = '\

Unity中的多屏以及最大化最小化

一 多屏 首先是多屏,我的需求是只显示在第二块屏幕上,而且第一块屏幕上的操作不能影响到第二块屏幕. 如果连了另一块屏幕,在打开exe的时候的配置框可以选择显示在哪块屏幕上 如果选择了第二块,不删除Data文件夹,回到Unity取消勾选Display Resolution Diag,下次打开直接跳到第二快屏幕上. 二 解决第二块屏幕的后台 但是如果仅仅这样,会遇到一个不大大小的问题-在主屏幕点击一下,第二块屏幕的显示就跑到后台去了. 我是想让第二块屏幕,不受第一块屏幕的影响而跑到后台. 经过尝试,

delphi 窗体最大化 最小化

procedure TForm1.SpeedButton2Click(Sender: TObject); begin sendmessage(form1.WindowHandle,WM_SYSCOMMAND,SC_ICON,0);//窗体最小化  任务栏中 end;   procedure TForm1.SpeedButton2Click(Sender: TObject); begin form1.WindowState :=  wsMaximized;//窗体最大化 end;   proced

WinForm 之 窗口最小化到托盘及右键图标显示菜单

Form最小化是指整个Form都缩小到任务栏上,但是窗体以Form的标题栏形式显示在任务栏上, 若是想让Form以Icon的形式显示在任务栏右下角,则需要给Form添加一个NotifyIcon控件. 一.添加NotifyIcon控件 1 如下图为窗体添加一个 NotifyIcon 控件,并指定 Icon 和 Text 属性,如下图: 2 在需要窗体最小化到托盘的处理代码中,添加如下代码: if(this.WindowState==FormWindowState.Normal&&this.V