预览模式: 普通 | 列表

NameCheap.com域名续费优惠码

centos lnmp “.user.ini”无法删除解决方法

LNMP安装及配置目录一览

Godaddy虚拟主机最新优惠码 私密日志

php插入mysql数据避免重复插入

虽然能用CefSharp将web应用嵌入到窗体程序,但遇到<a >标签(_blank)会弹出一个窗口,而且在任意位置可以弹出右键菜单,

需要解决这个问题才像一个真正的客户端软件。

不弹子窗体

控制弹窗的接口是ILifeSpanHandler,并实现OnBeforePopup方法。如下:

定义LifeSpanHandler类:

C#代码
  1. using CefSharp;  
  2. using CefSharp.WinForms;  
  3.   
  4. namespace CefTest  
  5. {  
  6.     internal class LifeSpanHandler : ILifeSpanHandler  
  7.     {  
  8.         //弹出前触发的事件  
  9.         public bool OnBeforePopup(IWebBrowser webBrowser, IBrowser browser, IFrame frame, string targetUrl,  
  10.             string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures,  
  11.             IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser)  
  12.         {  
  13.             //使用源窗口打开链接,取消创建新窗口  
  14.             newBrowser = null;  
  15.             var chromiumWebBrowser = (ChromiumWebBrowser)webBrowser;  
  16.             chromiumWebBrowser.Load(targetUrl);  
  17.             return true;  
  18.         }  
  19.   
  20.         public void OnAfterCreated(IWebBrowser chromiumWebBrowser, IBrowser browser)  
  21.         {  
  22.              
  23.         }  
  24.   
  25.         public bool DoClose(IWebBrowser chromiumWebBrowser, IBrowser browser)  
  26.         {  
  27.             return true;  
  28.         }  
  29.   
  30.         public void OnBeforeClose(IWebBrowser chromiumWebBrowser, IBrowser browser)  
  31.         {  
  32.               
  33.         }  
  34.     }  
  35. }  

 调用方式

C#代码
  1. using CefSharp;using CefSharp.WinForms;  
  2.   
  3. namespace LawSever  
  4. {  
  5.     public partial class frmweb : Form  
  6.     {  
  7.         public frmweb()  
  8.         {  
  9.             InitializeComponent();  
  10.             InitBrowser();  
  11.         }  
  12.         public ChromiumWebBrowser browser;  
  13.         public void InitBrowser()  
  14.         {       //Cef.Initialize(new CefSettings());//亲测这句代码 可不执行 也好用  
  15.             browser = new ChromiumWebBrowser("https://ai.12348.gov.cn/pc/");  
  16.   
  17.             browser.LifeSpanHandler = new LifeSpanHandler();//超链接不弹新窗体  
  18.   
  19.             this.panel1.Controls.Add(browser);//panel      
  20.         }  
  21. }  

禁用右键

禁用右键的接口是IContextMenuHandler,并实现OnBeforeContextMenu 方法。如下:

定义MenuHandler类:

C#代码
  1. using CefSharp;  
  2.   
  3. namespace CefTest  
  4. {  
  5.     internal class MenuHandler : IContextMenuHandler  
  6.     {  
  7.         public void OnBeforeContextMenu(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IContextMenuParams parameters,  
  8.             IMenuModel model)  
  9.         {  
  10.             model.Clear();  
  11.         }  
  12.   
  13.         public bool OnContextMenuCommand(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IContextMenuParams parameters,  
  14.             CefMenuCommand commandId, CefEventFlags eventFlags)  
  15.         {  
  16.             return false;  
  17.         }  
  18.   
  19.         public void OnContextMenuDismissed(IWebBrowser webBrowser, IBrowser browser, IFrame frame)  
  20.         {  
  21.         
  22.         }  
  23.   
  24.         public bool RunContextMenu(IWebBrowser webBrowser, IBrowser browser, IFrame frame, IContextMenuParams parameters,  
  25.             IMenuModel model, IRunContextMenuCallback callback)  
  26.         {  
  27.             return false;  
  28.         }  
  29.     }  
  30. }  

调用方式:

C#代码
  1. ChromeBrowser.MenuHandler = new MenuHandler();  

 

Tags: c#

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 232

vb.net判断重复文本并提取

Dim data As New List(Of String) ' 保存2000000条数据的列表
' 假设数据已经保存在 data 列表中

Dim countDict As New Dictionary(Of String, Integer) ' 字典用于保存每条数据的重复次数

For Each item As String In data
If countDict.ContainsKey(item) Then
countDict(item) += 1 ' 如果字典中已经存在这条数据,重复次数加1
Else
countDict(item) = 1 ' 如果字典中不存在这条数据,添加到字典中并初始化重复次数为1
End If
Next

' 输出重复次数大于1的数据
For Each item As KeyValuePair(Of String, Integer) In countDict
If item.Value > 1 Then
Console.WriteLine("{0}: {1}", item.Key, item.Value)
End If
Next

Tags: vb.net

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 375

vb.net正则判断ip端口格式

Dim ip As String = "192.168.0.1"

' 创建正则表达式对象
Dim regex As New System.Text.RegularExpressions.Regex("^(\d{1,3}\.){3}\d{1,3}$")

' 判断是否是 IP 地址
If regex.IsMatch(ip) Then
Console.WriteLine("The string is an IP address.")
Else
Console.WriteLine("The string is not an IP address.")
End If


Dim ipAndPort As String = "192.168.0.1:8080"

查看更多...

Tags: vb.net

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 291

vb.net多线程下载

 Imports System.IO
Imports System.Net
Imports System.Threading

Public Class Form1
Private downloadThreads As List(Of Thread) = New List(Of Thread)()
Private downloadUrls As List(Of String) = New List(Of String)()

Private proxy As WebProxy = New WebProxy("http://proxy.example.com:8080")
Private threadCount As Integer = 10

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' 添加需要下载的网址
For i As Integer = 1 To 10000
downloadUrls.Add("http://example.com/file" & i & ".jpg")
Next
End Sub

查看更多...

Tags: vb.net

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 284

vb.net多线程下载

Imports System.IO
Imports System.Net
Imports System.Threading

Public Class Form1
Private downloadThreads As List(Of Thread) = New List(Of Thread)()
Private downloadUrls As List(Of String) = New List(Of String)()

Private proxy As WebProxy = New WebProxy("http://proxy.example.com:8080")
Private threadCount As Integer = 10

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' 添加需要下载的网址
For i As Integer = 1 To 10000
downloadUrls.Add("http://example.com/file" & i & ".jpg")
Next
End Sub

查看更多...

Tags: vb.net

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 267

 广告位

↑返回顶部↑