当前位置:
  1. 首页 »
  2. 笔记 »
  3. 正文

Visual Studio 2019 C# Winforms 相关记录

零分 1,788

改变窗体

this.SizeChanged += Form1_SizeChanged;
...
private void Form1_SizeChanged(object sender, EventArgs e){
//操作代码
}

NotifyIcon1鼠标左右键

private void NotifyIcon1_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
               //右键
            }

            if (e.Button == MouseButtons.Left)
            {
                //左键
            }

        }

禁止CefSharp ChromiumWebBrowser新窗口打开

public class CefLifeSpanHandler : ILifeSpanHandler
        {
            public CefLifeSpanHandler()
            {

            }

            public bool DoClose(IWebBrowser browserControl, IBrowser browser)
            {
                if (browser.IsDisposed || browser.IsPopup)
                {
                    return false;
                }

                return true;
            }

            public void OnAfterCreated(IWebBrowser browserControl, IBrowser browser)
            {

            }

            public void OnBeforeClose(IWebBrowser browserControl, IBrowser browser)
            {
            }

            // 阻止打开新的窗体
            public bool OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures, IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser)
            {
                newBrowser = null;
                var chromiumWebBrowser = (ChromiumWebBrowser)browserControl;
                chromiumWebBrowser.Load(targetUrl);
                return true;
            }
        }

控件设置

 public void InitializeChromium()
        {
            CefSettings settings = new CefSettings() { IgnoreCertificateErrors = true };

            Cef.Initialize(settings);
            web.LifeSpanHandler = new CefLifeSpanHandler();
            web.BrowserSettings = new BrowserSettings()
            {
                WebGl = CefState.Enabled,
                ImageLoading = CefState.Enabled,
                RemoteFonts = CefState.Enabled,
                AcceptLanguageList = "zh-CN"
            };
        }

浏览器缓存配置

 var settings = new CefSettings()
            {
                Locale = "zh-CN",
                CachePath = Directory.GetCurrentDirectory() + @"\Cache",
                IgnoreCertificateErrors = true
            };

            settings.CefCommandLineArgs.Add("proxy-auto-detect", "0");
            settings.CefCommandLineArgs.Add("no-proxy-server", "1");

            /*初始化配置*/
            Cef.Initialize(settings);

禁止程序多开,Program.cs

static class Program
    {
        static readonly Mutex  mutex = new Mutex(true, "MyMutex");
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        
        static void Main()
        {

            if (mutex.WaitOne(TimeSpan.Zero, true))
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
                mutex.ReleaseMutex();
            }
            else
            {
                MessageBox.Show("程序已经在运行中!","提示");
            }
        }

    }

圆角:控件

class DesignForm
    {
        public void Type(Control sender, int p_1, double p_2)
        {
            GraphicsPath oPath = new GraphicsPath();
            oPath.AddClosedCurve(new Point[] { new Point(0, sender.Height / p_1), new Point(sender.Width / p_1, 0), new Point(sender.Width - sender.Width / p_1, 0), new Point(sender.Width, sender.Height / p_1), new Point(sender.Width, sender.Height - sender.Height / p_1), new Point(sender.Width - sender.Width / p_1, sender.Height), new Point(sender.Width / p_1, sender.Height), new Point(0, sender.Height - sender.Height / p_1) }, (float)p_2);
            sender.Region = new Region(oPath);
        }

    }

调用方式:

 public partial class Form1 : Form
    {
        readonly DesignForm DDesignF = new DesignForm();
//...
DDesignF.Type(控件名, 15, 0.2);

控件圆形

public void region(Control sender)
        {
            
            GraphicsPath gp = new GraphicsPath();
            gp.AddEllipse(sender.ClientRectangle);
            Region region = new Region(gp);
            sender.Region = region;
            gp.Dispose();
            region.Dispose();
        }

调用:

DDesignF.region(QRClose);

交互,点击浏览器上元素

Pweb.EvaluateScriptAsync("document.querySelector('.play-pause').click()");
标签:

VS C#WinForms CefSharp 浏览器控件播放视频及视频全屏播放

CefSharp 默认是不支持视频播放的,不过,有大神魔改了dll,可以完美支持视频播放,现在很多资源已经不太好找了,就算找到,也都是基本上需要收费的(下载收费),所以只找到了一个CefSharp for winforms 100.0.23版本的dll,在需要使用网页视频播放的时候,下载安装CefSharp的时候,选择版本100.0.23。dll文件已放在文末。 但是...问题来了,视频播放的时候,无法全屏播放,百度了几天(可能现在需要去Google,百度已经没有什么资源可用了)一直无法实现。 开始一直找的是CefSharp的全屏接口OnFullscreenModeChange,一直在纠结这个
笔记 1,505

网站设置开灯(亮模式/白天)和关灯(暗模式/黑夜)效果

在很早之前,这个效果叫做开灯/关灯,现在叫做白天/黑夜,曾经有那么一段时间没有看到过这种效果,现在又很多网站/APP都喜欢这种切换白天/黑夜模式。 实现效果:设置2套或者多套色调模板,和之前的那种换皮肤大差不差。所以博客新主题也设置了这么一个效果,样式布局基本没怎么改变,后台设置页升级了一下,很多东西都不再“写死”,可以自由设置! 白天模式效果: 黑夜模式效果: 感觉黑夜的色调比较好看。 总体涉及到的原理: 1、设计2套或者多套CSS样式,可以在body里添加一个class,后面保留class/ID样式名称不变,在不同的样式里给设计一个区域,通过body里的class名调用不同的样式CSS。
笔记 2,224

记一次网页源码顶部空白行的问题处理

正常来说,网页源码顶部如非UFT-8 bom编码的问题,基本不会影响网站的正常运行,但如php生成xml的话,就会出现问题。 因更换了主题(新主题暂时未上线,只是测试),发现xml无法正常显示,查看源码,顶部多出了一行空白行,本地运行正常。 查找原因,基本每个PHP问题都排查了,未发现任何问题,将主题上传到另外一个网站运行,发现正常。基本可以排除是主题的原因,剩下的可能是插件的问题。 查看了插件的源码,发现真的是插件的问题,PHP插件文件底部多出了几行,删除多出的行,重新运行,空白行不见了! 记录下,防止下次又因同样的原因而花时间去排查!
笔记 2,343

wordpress禁用REST API导致古腾堡编辑器发布文章出错问题

wordpress禁用REST API,在function.php中加入以下代码: add_filter("json_enabled", "__return_false"); add_filter("json_jsonp_enabled", "__return_false"); add_filter("rest_enabled", "__return_false"); add_filter("rest_jsonp_enabled", "__return_false"); remove_action("init", "rest_api_init"); remove_action("rest_ap
笔记 1,193

wordpress 后台主题设置选项按钮(button、input submit)点击屏蔽提交事件禁止刷新

wordpress 后台主题设置选项按钮(button、input submit)点击屏蔽提交事件禁止刷新 如果在设计主题或者插件后台设置选项时,wordpress后台的按钮(button、input submit)默认是提交操作,如只是响应JS事件,需要屏蔽提交,防止页面刷新。e.preventDefault(); 完整示例: $("button.copy").on("click",function(e){ e.preventDefault(); JS操作 });
笔记 1,071