精华内容
下载资源
问答
  • winform 使用html做界面

    2020-12-29 09:00:22
    winform 使用html做界面
  • [C#]winform使用html做界面

    万次阅读 2012-01-05 17:25:32
    DirectUI技术开发界面的好奇 今天想到 怎么不让winform也那样了,使用html ui ,大家都知道 使用div +css布局是一件非常容易的事情; 光说不练是假打,所以花了一个把小时尝试把winform界面做成 webui ...

    DirectUI技术开发界面的好奇 今天想到 怎么不让winform也那样了,使用html 做 ui ,大家都知道 使用div +css布局是一件非常容易的事情;

    光说不练是假打,所以花了一个把小时尝试把winform的界面做成 webui



    一: 
    大家都知道 winform 中有个控件叫 webBrowser  如果你不知道具体怎么用  详细看msdn 都知道了;  这里的它就是主角;

    准备:

    现在 我们新建一个winform项目  在上面放一个webBrowser 名称默认  停靠父窗口  在新建一个html 网页 名称 html.htm


      
     #region Windows 窗体设计器生成的代码
    
            /// <summary>
            /// 设计器支持所需的方法 - 不要
            /// 使用代码编辑器修改此方法的内容。
            /// </summary>
           private void InitializeComponent()
            {
                this.components = new System.ComponentModel.Container();
                this.moveContron1 = new MoveControns.MoveContron(this.components);
                this.webBrowser1 = new System.Windows.Forms.WebBrowser();
                this.SuspendLayout();
                // 
                // moveContron1
                // 
                this.moveContron1.form = this;
                this.moveContron1.MoveBorder = true;
                // 
                // webBrowser1
                // 
                this.webBrowser1.Dock = System.Windows.Forms.DockStyle.Fill;
                this.webBrowser1.IsWebBrowserContextMenuEnabled = false;
                this.webBrowser1.Location = new System.Drawing.Point(2, 2);
                this.webBrowser1.MinimumSize = new System.Drawing.Size(20, 20);
                this.webBrowser1.Name = "webBrowser1";
                this.webBrowser1.ScrollBarsEnabled = false;
                this.webBrowser1.Size = new System.Drawing.Size(375, 258);
                this.webBrowser1.TabIndex = 1;
                this.webBrowser1.Url = new System.Uri("file:///E:/visual%20studio/WebUi/WebUi/HTML.htm", System.UriKind.Absolute);
                this.webBrowser1.WebBrowserShortcutsEnabled = false;
                // 
                // MianWindow
                // 
                this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
                this.BackColor = System.Drawing.SystemColors.ActiveCaptionText;
                this.ClientSize = new System.Drawing.Size(379, 262);
                this.Controls.Add(this.webBrowser1);
                this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
                this.Name = "MianWindow";
                this.Opacity = 0.9D;
                this.Padding = new System.Windows.Forms.Padding(2);
                this.Text = "Form_Test";
                this.Paint += new System.Windows.Forms.PaintEventHandler(this.MianWindow_Paint);
                this.ResumeLayout(false);
    
            }
    
            #endregion
    
           private MoveControns.MoveContron moveContron1;
           private System.Windows.Forms.WebBrowser webBrowser1;
    

    html的内容如下:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
        <title></title>
    </head>
    <body style="background-color: Silver; width: 100%; height: 100%; margin: 0; padding: 0">
        <div>
            <span οnmοusedοwn="window.external.WinApiMoveEvent()" οnmοuseοver="this.style.cursor =  'move';"
                οnmοuseοut="this.style.cursor='default'">11111111</span> <span style="float: right">
                    <input id="Button2" type="button" value="最大化" οnclick="max()" />
                    <input id="Button3" type="button" value="CloseMe" οnclick="closewin()" /></span>
        </div>
        <table border="1" cellspacing="0" cellpadding="0" width="100%" height="100%">
            <tr>
                <td align="right">
                </td>
            </tr>
            <tr>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                </td>
            </tr>
        </table>
    </body>
    </html>
    <script type="text/javascript">
        // 给Winform调用的方法
        function ShowAlert(msg) {
            alert(msg);
        }
        function closewin() {
            window.external.CloseMe()
        }
    
        function max() {
            var val = document.getElementById('Button2').value;
            if (val = '最大化') {
                document.getElementById('Button2').value = '最小化'
            }
            else {
                document.getElementById('Button2').value = '最大化'
            };
            window.external.MaxWin();
        }
    </script>
    

    为了 使网页能够 与winform 交互   所以  的把 com 的看见行 设置为真

      [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
        [ComVisible(true)] // 将该类设置为com可访问
        public partial class MianWindow : GlassForm
        {}

    为了 更好看 我们把 winform的 边框 去掉  

    这里 的代码 是 处理  移动窗口 我们使用 winApi
         #region win32 api 移动窗体
            [DllImport("user32.dll")]
            public static extern bool ReleaseCapture();
            [DllImport("user32.dll")]
            public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
            public const int WM_SYSCOMMAND = 0x0112;
            public const int SC_MOVE = 0xF010;
            public const int HTCAPTION = 0x0002;
    
    this.MouseDown += new MouseEventHandler(WinApiMoveEvent);
            public void WinApiMoveEvent() //这里重载了 主要解决 参数问题
            {
                ReleaseCapture();
                SendMessage(dropForm.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
            }
            public void WinApiMoveEvent(object sender, System.Windows.Forms.MouseEventArgs e)
            {
                ReleaseCapture();
                SendMessage(dropForm.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
            }
            #endregion
     现在 演示 怎么让js 调用 winform的方法 

     /// <summary>
            /// 给WebBrowser中Web的JS调用的方法  关闭自己
            /// </summary>
            /// <param name="msg"></param>
            public void ShowMsg(string msg)
            {
    
            }
            void Form1_AeroGlassCompositionChanged(object sender, AeroGlassCompositionChangedEventArgs e)
            {
                // When the desktop composition mode changes the window exclusion must be changed appropriately.
                if (e.GlassAvailable)
                {
                    Invalidate();
                }
                else
                {
                    this.BackColor = Color.Teal;
                }
            }
            public void CloseMe()
            {
                if (MessageBox.Show("你确定要关闭吗?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    Close();
                }
            }
    ///最大化和最小化的处理
      public void MaxWin()
            {
                if (this.WindowState == FormWindowState.Maximized)
                {
                    this.WindowState = FormWindowState.Normal;
                }
                else
                {
                    this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
                    this.WindowState = FormWindowState.Maximized;
    
    
                }
            }
    
    如果是winform 要调用 web中的js 看这里

    webBrowser1里有 document. InvokeScript("这里是js 的函数名", 这里是参数);

    现在 基本完成  ,
    本人 不善表达  如有不明白 这里下源码看



    展开全文
  • DirectUI技术开发界面的好奇 今天想到 怎么不让winform也那样了,使用html ui ,大家都知道 使用div +css布局是一件非常容易的事情; 光说不练是假打,所以花了一个把小时尝试把winform界面做成 webui ...

    DirectUI技术开发界面的好奇 今天想到 怎么不让winform也那样了,使用html 做 ui ,大家都知道 使用div +css布局是一件非常容易的事情;

    光说不练是假打,所以花了一个把小时尝试把winform的界面做成 webui



    一: 
    大家都知道 winform 中有个控件叫 webBrowser  如果你不知道具体怎么用  详细看msdn 都知道了;  这里的它就是主角;

    准备:

    现在 我们新建一个winform项目  在上面放一个webBrowser 名称默认  停靠父窗口  在新建一个html 网页 名称 html.htm


      
     #region Windows 窗体设计器生成的代码
    
            /// <summary>
            /// 设计器支持所需的方法 - 不要
            /// 使用代码编辑器修改此方法的内容。
            /// </summary>
           private void InitializeComponent()
            {
                this.components = new System.ComponentModel.Container();
                this.moveContron1 = new MoveControns.MoveContron(this.components);
                this.webBrowser1 = new System.Windows.Forms.WebBrowser();
                this.SuspendLayout();
                // 
                // moveContron1
                // 
                this.moveContron1.form = this;
                this.moveContron1.MoveBorder = true;
                // 
                // webBrowser1
                // 
                this.webBrowser1.Dock = System.Windows.Forms.DockStyle.Fill;
                this.webBrowser1.IsWebBrowserContextMenuEnabled = false;
                this.webBrowser1.Location = new System.Drawing.Point(2, 2);
                this.webBrowser1.MinimumSize = new System.Drawing.Size(20, 20);
                this.webBrowser1.Name = "webBrowser1";
                this.webBrowser1.ScrollBarsEnabled = false;
                this.webBrowser1.Size = new System.Drawing.Size(375, 258);
                this.webBrowser1.TabIndex = 1;
                this.webBrowser1.Url = new System.Uri("file:///E:/visual%20studio/WebUi/WebUi/HTML.htm", System.UriKind.Absolute);
                this.webBrowser1.WebBrowserShortcutsEnabled = false;
                // 
                // MianWindow
                // 
                this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
                this.BackColor = System.Drawing.SystemColors.ActiveCaptionText;
                this.ClientSize = new System.Drawing.Size(379, 262);
                this.Controls.Add(this.webBrowser1);
                this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
                this.Name = "MianWindow";
                this.Opacity = 0.9D;
                this.Padding = new System.Windows.Forms.Padding(2);
                this.Text = "Form_Test";
                this.Paint += new System.Windows.Forms.PaintEventHandler(this.MianWindow_Paint);
                this.ResumeLayout(false);
    
            }
    
            #endregion
    
           private MoveControns.MoveContron moveContron1;
           private System.Windows.Forms.WebBrowser webBrowser1;
    

    html的内容如下:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
        <title></title>
    </head>
    <body style="background-color: Silver; width: 100%; height: 100%; margin: 0; padding: 0">
        <div>
            <span οnmοusedοwn="window.external.WinApiMoveEvent()" οnmοuseοver="this.style.cursor =  'move';"
                οnmοuseοut="this.style.cursor='default'">11111111</span> <span style="float: right">
                    <input id="Button2" type="button" value="最大化" οnclick="max()" />
                    <input id="Button3" type="button" value="CloseMe" οnclick="closewin()" /></span>
        </div>
        <table border="1" cellspacing="0" cellpadding="0" width="100%" height="100%">
            <tr>
                <td align="right">
                </td>
            </tr>
            <tr>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                </td>
            </tr>
        </table>
    </body>
    </html>
    <script type="text/javascript">
        // 给Winform调用的方法
        function ShowAlert(msg) {
            alert(msg);
        }
        function closewin() {
            window.external.CloseMe()
        }
    
        function max() {
            var val = document.getElementById('Button2').value;
            if (val = '最大化') {
                document.getElementById('Button2').value = '最小化'
            }
            else {
                document.getElementById('Button2').value = '最大化'
            };
            window.external.MaxWin();
        }
    </script>
    

    为了 使网页能够 与winform 交互   所以  的把 com 的看见行 设置为真

      [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
        [ComVisible(true)] // 将该类设置为com可访问
        public partial class MianWindow : GlassForm
        {}

    为了 更好看 我们把 winform的 边框 去掉  

    这里 的代码 是 处理  移动窗口 我们使用 winApi
         #region win32 api 移动窗体
            [DllImport("user32.dll")]
            public static extern bool ReleaseCapture();
            [DllImport("user32.dll")]
            public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
            public const int WM_SYSCOMMAND = 0x0112;
            public const int SC_MOVE = 0xF010;
            public const int HTCAPTION = 0x0002;
    
    this.MouseDown += new MouseEventHandler(WinApiMoveEvent);
            public void WinApiMoveEvent() //这里重载了 主要解决 参数问题
            {
                ReleaseCapture();
                SendMessage(dropForm.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
            }
            public void WinApiMoveEvent(object sender, System.Windows.Forms.MouseEventArgs e)
            {
                ReleaseCapture();
                SendMessage(dropForm.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
            }
            #endregion
     现在 演示 怎么让js 调用 winform的方法 

     /// <summary>
            /// 给WebBrowser中Web的JS调用的方法  关闭自己
            /// </summary>
            /// <param name="msg"></param>
            public void ShowMsg(string msg)
            {
    
            }
            void Form1_AeroGlassCompositionChanged(object sender, AeroGlassCompositionChangedEventArgs e)
            {
                // When the desktop composition mode changes the window exclusion must be changed appropriately.
                if (e.GlassAvailable)
                {
                    Invalidate();
                }
                else
                {
                    this.BackColor = Color.Teal;
                }
            }
            public void CloseMe()
            {
                if (MessageBox.Show("你确定要关闭吗?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    Close();
                }
            }
    ///最大化和最小化的处理
      public void MaxWin()
            {
                if (this.WindowState == FormWindowState.Maximized)
                {
                    this.WindowState = FormWindowState.Normal;
                }
                else
                {
                    this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
                    this.WindowState = FormWindowState.Maximized;
    
    
                }
            }
    
    如果是winform 要调用 web中的js 看这里

    webBrowser1里有 document. InvokeScript("这里是js 的函数名", 这里是参数);

    现在 基本完成  ,
    本人 不善表达  如有不明白 这里下源码看



    作者:qq283868910 发表于2012-1-5 17:25:32 原文链接
    阅读:441 评论:0 查看评论

    转载于:https://www.cnblogs.com/SpeakHero/archive/2012/01/05/2431296.html

    展开全文
  • 使用C#开发winform程序的界面框架  [ 2010-1-18 16:37:00 | By: 陈逊 ] 0 推荐 了几年web前端开发,经常用f r a m e s e t框架,就是先新建一个html文件,然后把页面分成4个部分:head...
    使用C#开发winform程序的界面框架 
    [ 2010-1-18 16:37:00 | By: 陈逊 ]
     

    做了几年web前端开发,经常用f r a m e s e t框架,就是先新建一个html文件,然后把页面分成4个部分:head、content、main、foot,然后再分别指向4个单独的html文件。head是最上方的一个banner,content是左边的菜单,多半用tree控件做,中间main是需要显示的主页面,然后用户通过点击左边的content,切换不同的主页面。如下图所示:

    18176149476.jpg

    最近由于工作需要,我计划开发一个winform程序,用的语言是C#,并且希望能在winform中实现类似于web的f r a m e s e t的效果,经过研究,总结出了一个比较简洁的方案,效果如下图:

    181714707279.jpg

    具体的做法是这样,首先创建一个“Windows应用程序”,先删了默认的那个“Form1”文件,然后创建一个叫MainForm的窗体,作为程序的主窗体。然后从控件箱拖3个控件过来:MenuStrip、ToolStrip、StatusStrip。注意要把ToolStrip的Dock改成Left,这样就类似f r a m e的content了。然后把MainForm的“IsMdiContainer”设置成true,意思是可以容纳多个Form对象。

    下面我们可以创建一批Form,类似于web程序创建一批aspx文件,每个Form实现不同的功能。这些Form的“FormBorderStyle”都要设置成None,这样就会隐藏最大化最小化那些按钮。另外要把AutoSize设置为true,目的是让Form能自适应主窗体的大小。把“ShowInTaskbar”设置为false。

    在这些子Form的Load事件中,添加一个函数,写下这么一句:

    this.Dock = DockStyle.Fill;

    这是为了填满主窗体。

    接下来,在主窗体的ToolStrip控件中添加一些按钮,然后编写click这些按钮的函数。在函数中首先需要生成子Form的实例,然后增加关键的一句:

    form_child.MdiParent = this;

    这句代码的意思是,让MainForm包含这个子窗体。

    当你在ToolStrip中增加了多个按钮,那么在click按钮时,需要判断一下对应的子Form是不是已经有实例了,如果有,就用form_child.Activate()就能显示这个子Form了。

    再往后,我们需要在MainForm的类中写一些public的函数,让子Form可以控制MainForm的StatusStrip,显示一些状态信息。此外,在winform程序的开发中,如果某一个函数的运行时间特别长,就要使用委托的方式来调用,否则就会出现点击一个按钮以后,Form就失去响应了,被block住了。关于委托的使用,我们将在别的文章里讨论。

    转载于:https://www.cnblogs.com/longshen/archive/2010/03/30/1701022.html

    展开全文
  • Winform开发框架主界面设计展示

    千次阅读 2014-02-07 15:27:21
    了好多年Winform的程序的开发,主窗口的界面设计一般都要求的更好一些,可以根据不同的系统功能模块进行归类整合,能使客户迅速寻找到相关功能的同时,也能感觉到整体性的美观大方,因此主窗口的界面设计总是会...

    http://www.cnblogs.com/wuhuacong/p/3360648.html

    做了好多年Winform的程序的开发,主窗口的界面设计一般都要求做的更好一些,可以根据不同的系统功能模块进行归类整合,能使客户迅速寻找到相关功能的同时,也能感觉到整体性的美观大方,因此主窗口的界面设计总是会精益求精,力求做到更好用、更美观,这样才能吸引客户使用。

    目前的主体界面设计,可以使用很多控件进行美化,这样能使得开发者能够迅速开发好美观的界面,也可以使得界面总体性有一个统一、规范的基准。一般推荐使用DevExpress或者DotNetbar这两款界面控件套件,他们都能设计出类似Office的Ribbon界面,这种界面整体感觉会比较好一些。

    1、标准的DevExpress样式界面

    在我的Winform开发框架中,也分为了传统性界面、DotNetBar样式界面、DevExpress样式界面这三种,根据不同的开发场景进行使用,如果是历史性原因导致,那就根据需要选择,如果是新的程序开发,那么建议采用DevExpress样式的界面,这种界面样式,经过我这几年的开发应用了解,觉得真的非常棒,非常强大,基于Dev样式的《Winform开发框架》主体界面设计如下所示。

    这个主体界面是Ribbon样式的界面,它分为了几个部分,我从顶部开始到下面进行介绍。

    1)、顶部样式选择

    DevExpress控件可以将窗体的空间运用到极致,很多细微的地方都可以用起来。在开发的应用程序中,增加这个样式选择,也会使客户觉得这个程序开发也是非常专业的(^_^)。

     

    2)、主程序菜单

    在Ribbon样式中,添加这种样式的主程序菜单,比增加一个顶部的MenuBar来的好看,这也是标准的Office程序的Ribbon样式菜单,我们可以在里面添加各种层级的菜单,如下面是一个简单的退出和重登录菜单。

     

    3)、主界面帮助小按钮

    主界面的右边可以放置一些小按钮,如在程序中放置一个帮助小按钮,用来给客户提供帮助或者技术支持的网址链接,都是不错的选择。

     

    4)、Ribbon样式分组按钮

    在我的Winform开发框架中,通过图文并茂的功能按钮,可以使得整个程序看起来更加美观,选取合适的按钮图标,更加可以提高客户的认同感,Ribbon样式的分组按钮,可以增加更多的功能菜单,也可以进行更合适的归类管理。

     

    5)、多文档界面布局

    现在的程序,一般录入或者查看的资料都会很多,程序尽可能保持客户的查看的窗口状态,以便更好的参考和对比,因此多文档界面就是一个非常合适的选择,如下界面所示。

     

    6)、底部状态栏

    底部菜单可以让客户更好了解程序的一些相关信息,如程序名称、登陆用户,日期,以及程序处理进度等方面的信息。

     

    2、Winform开发框架的扩展性界面样式

    以上就是标准的框架界面,有时候我也会根据需要给客户设计一些不同的界面样式,如我的标准Winform开发框架界面,还可以扩展为下面的界面风格(适用于界面功能比较多的情况)

    这种界面方式,通过结合Ribbon功能和NaviBarControl的方式,实现更多功能的展示,如果必要,可以根据Ribbon的按钮,展开左边的NavibarControl的相关的模块内容。

    上面界面的Ribbon按钮图标,在界面功能比较多的时候,还可以以小图标按钮方式进行展示,这样一个区域可以包含更多的功能按钮,如下所示。

    主程序的菜单可以分级展示,如二级菜单可以进一步展开更多的菜单,如下所示。

     

    对于一些传统布局的界面,我们还可以通过如下的人力资源管理系统界面进行展示,这种界面比较适合功能点比较多的界面,这种可以通过树形菜单进行打开操作具体的模块界面。

    以上就是这几种Winform界面样式的设计思路和展示,希望对大家有启发帮助。 

    展开全文
  • 最近修改老旧的MFC项目,用的网页做界面,和HTML交互采用的是COM方式,繁琐,丑陋又性能低下,于是考虑利用js来进行界面交互,查了一天的资料,现在整理如下,供后来需要的人参考,虽然大概几乎不会有人用MFC来做...
  • 过了很多Winform的共享软件,对界面的设计有了一定的经验和积累,准备开一个“WinForm界面开发”系列文章,介绍下相关的Winform界面设计和相关控件的使用,促进相互交流,以获得更好的发展和了解。 在很多Winform...
  • 使用HTML页面美化WinForm窗体

    千次阅读 2012-02-04 13:50:46
    这经常会让我们感到头疼,因为使用GDI或GDI+都需要很多的事情,今天我在此介绍一种简单便捷且可以让你创作出更为简单且美观的用户界面。当然也许我不是第一个介绍这种方法,但起码会给你一点更为简单的提示,来...
  • 过.NET Winform窗体美化的人应该都很熟悉UpdateLayeredWindow吧,UpdateLayeredWindow可以实现窗体的任意透明,效果很好,不会有毛边。不过使用这个API之后,会有一个问题就是无法使用普通控件,而且没有
  • 在Electron+HTML做界面,C#做后台(四)中,我们已经实现了前后端的数据交互,奈何,如果后端返回数据字符过长,就回导致前端接受失败,因此,我们需要加入 【winform http服务】当然它的作用就很简单了,只需要监听...
  • 在Electron+HTML做界面,C#做后台(四)中,我们已经实现了前后端的数据交互,奈何,如果后端返回数据字符过长,就回导致前端接受失败,因此,我们需要加入 【winform http服务】当然它的作用就很简单了,只需要监听...
  • 最近修改老旧的MFC项目,用的网页做界面,和HTML交互采用的是COM方式,繁琐,丑陋又性能低下,于是考虑利用js来进行界面交互,查了一天的资料,现在整理如下,供后来需要的人参考,虽然大概几乎不会有人用MFC来做...
  • 我需要winform实现wpf的列表样式效果,wpf很多收银机加载都特别慢,换成winform有的样式不能解决,用new控件的方式又担心界面卡。求大神指点 ![图片说明]...
  • Winform开发里面,有些使用RichTextBox控件来编辑HTML,也有一些结合WebBrowser控件来实现内容的编辑,其中我觉得的最好的应该是Zeta HTML Edit Control...
  • 使用了博客https://www.cnblogs.com/ghbjimmy/articles/5138142.html中提供的MySQLHelper类。 步骤如下: 在引用中引入mysql.data.dll 了一个登录界面和注册界面大致如下 其中界面中各个控件的详细不再赘述,例如...
  • 自己应用,遇到这样的需求,然后到网上找HTML编辑器控件,找了N多HTML编辑器控件,但实践下来效果非常不理想,无论从界面到功能,到大小,再到兼容性等等都比不上我们常用的网页编辑器就是js写的编辑器。...
  • 过.NET Winform窗体美化的人应该都很熟悉UpdateLayeredWindow吧,UpdateLayeredWindow可以实现窗体的任意透明,效果很好,不会有毛边。不过使用这个API之后,会有一个问题就是无法使用普通控件,而且没有Paint消息...

空空如也

空空如也

1 2 3
收藏数 59
精华内容 23
关键字:

winform使用html做界面