WPF里webview2会一直处于其他控件最上层,是个历史遗留问题。

为了能在webview2里鼠标移动让窗体跟着移动位置代码如下:

  async Task InitializeAsync()
{
AppLog.AddLog("InitializeAsync...........");
try
{
CoreWebView2EnvironmentOptions opts = new CoreWebView2EnvironmentOptions() { AdditionalBrowserArguments = "--autoplay-policy=user-gesture-required" };
var env = await CoreWebView2Environment.CreateAsync(userDataFolder: System.IO.Path.Combine(System.IO.Path.GetTempPath(), "wgscd_Browser"), options: opts);
await webView.EnsureCoreWebView2Async(env); // webView.CoreWebView2.AddWebResourceRequestedFilter(null, CoreWebView2WebResourceContext.Websocket); // webView.CoreWebView2.WebResourceRequested += CoreWebView2_WebResourceRequested;
//https://weblog.west-wind.com/posts/2021/Jan/14/Taking-the-new-Chromium-WebView2-Control-for-a-Spin-in-NET-Part-1 // webView.CoreWebView2.NavigationCompleted += CoreWebView2_NavigationCompleted;
// webView.ContextMenuOpening += WebView_ContextMenuOpening;
webView.CoreWebView2.Settings.AreHostObjectsAllowed = true;
webView.CoreWebView2.Settings.IsWebMessageEnabled = true;
webView.CoreWebView2.WebMessageReceived += CoreWebView2_WebMessageReceived; webView.DefaultBackgroundColor = System.Drawing.Color.FromArgb(0, 0, 0, 0);
//webView.Source = new System.Uri("E:\\mm\\2.html"); AppLog.AddLog("InitializeAsync...compete.");
} catch (Exception ex)
{
MessageBox.Show("init webview err:\r\n" + ex.Message); } } private void CoreWebView2_WebMessageReceived(object sender, CoreWebView2WebMessageReceivedEventArgs e)
{
var message = e.TryGetWebMessageAsString();
try
{
if (message.StartsWith("DragMove:"))
{
// 解析消息以获取需要移动的距离或其他信息
// 这里只是一个示例,你可能需要解析更复杂的消息格式
var xy = message.Substring("DragMove:".Length).Split(',');
var x = int.Parse(xy[0]);
var y = int.Parse(xy[1]);
Debug.Print("" + x+","+y);
Title = "" + "" + x + "," + y;
Left = Left + x;
Top = Top + y; }
}
catch { } /*
page js:
<script>
let startX, startY, distanceX, distanceY;
document.addEventListener('mousedown', function(e) {
startX = e.pageX;
startY = e.pageY;
document.addEventListener('mousemove', mouseMoveHandler);
document.addEventListener('mouseup', mouseUpHandler);
}); function mouseMoveHandler(e) {
distanceX = e.pageX - startX;
distanceY = e.pageY - startY;
window.chrome.webview.postMessage("DragMove:"+distanceX+","+distanceY);
console.log(`Dragged ${distanceX} horizontally and ${distanceY} vertically.`);
} function mouseUpHandler(e) {
document.removeEventListener('mousemove', mouseMoveHandler);
document.removeEventListener('mouseup', mouseUpHandler);
}
</script> */ }

  

WPF中webview2鼠标移动窗体的更多相关文章

  1. WPF中制作无边框窗体

    原文:WPF中制作无边框窗体 众所周知,在WinForm中,如果要制作一个无边框窗体,可以将窗体的FormBorderStyle属性设置为None来完成.如果要制作成异形窗体,则需要使用图片或者使用G ...

  2. WPF中获取鼠标相对于屏幕的位置

    原文:WPF中获取鼠标相对于屏幕的位置 WPF中获取鼠标相对于屏幕的位置                                   周银辉WPF编程时,我们经常使用Mouse.GetPosi ...

  3. 01.WPF中制作无边框窗体

    [引用:]http://blog.csdn.net/johnsuna/article/details/1893319   众所周知,在WinForm中,如果要制作一个无边框窗体,可以将窗体的FormB ...

  4. VB6/VBA中跟踪鼠标移出窗体控件事件(类模块成员函数指针CHooker类应用)

    一.关于起因 前几天发了一篇博文,是关于获取VB类模块成员函数指针的内容(http://www.cnblogs.com/alexywt/p/5880993.html):今天我就发一下我的应用实例. V ...

  5. WPF中自定义标题栏时窗体最大化处理之WindowChrome

    注意: 本文方法基础是WindowChrome,而WindowChrome在.NET Framework 4.5之后才集成发布的.见:WindowChrome Class 在.NET Framewor ...

  6. WPF中当鼠标移到按钮上时,按钮的背景图片消失的问题

    如果给按钮设置了背景图片,当鼠标移到按钮上的时候,按钮就好变成一个浅蓝色的按钮,背景图片就消失了,对于这个问题有很多解决方法,我只分享一下我的解决方法. 我第一次用的方式是在按钮中添加一个图片,不用背 ...

  7. WPF中获取鼠标相对于桌面位置

    var transform = PresentationSource.FromVisual(this).CompositionTarget.TransformFromDevice; var mouse ...

  8. WPF中获取Hwnd与窗体,Uid获取控件

    void MapControl_Loaded(object sender, RoutedEventArgs e) { this.OnApplyTemplate(); CurrentMapChanged ...

  9. WPF中不规则窗体与WindowsFormsHost控件的兼容问题完美解决方案

    首先先得瑟一下,有关WPF中不规则窗体与WindowsFormsHost控件不兼容的问题,网上给出的解决方案不能满足所有的情况,是有特定条件的,比如  WPF中不规则窗体与WebBrowser控件的兼 ...

  10. WPF中不规则窗体与WebBrowser控件的兼容问题解决办法

    原文:WPF中不规则窗体与WebBrowser控件的兼容问题解决办法 引言 这几天受委托开发一个网络电视项目,要求初步先使用内嵌网页形式实现视频播放和选单,以后再考虑将网页中的所有功能整合进桌面程序. ...

随机推荐

  1. 使用IntelliJ IDEA中的Live Templates自定义代码模板

    平时用IntelliJ IDEA写代码的时候,你有没有用过这些快捷方式: 输入main,会弹出自动补全完整的main结构: 输入sout,会弹出自动补全完整的System.out语句: 那么问题来了: ...

  2. 查看一个package是否在执行

    select a.type, a.owner, b.SID, b.SERIAL#, b.OSUSER, b.MACHINE, b.PROGRAM, b.MODULE, b.ACTION From db ...

  3. jenkins拉取github代码报错问题解决

    问题起因: 踩坑踩坑 用jenkins拉取github项目的代码时,配置完成点击构建时,报错信息为:Couldn't find any revision to build. Verify the re ...

  4. 使用yt-dlp下载youtube高清2k 60fps视频

    只演示windows下的操作,linux和mac应该差不多的命令行. 首先放上github仓库地址:https://github.com/yt-dlp/yt-dlp 它的介绍: 厉害啊,支持数千个网站 ...

  5. cornerstone中raft_server_req_handlers源码解析

    1.概述 之前说过raft_server是cornerstone的核心,其中充满了很多req的发送,那么follower收到leader的req会怎么处理呢? 本文就是来解析cornerstone中处 ...

  6. Linux之定时任务crontab

    一.cron.d增加定时任务 当我们要增加全局性的计划任务时,一种方式是直接修改/etc/crontab.但是,一般不建议这样做,/etc/cron.d目录就是为了解决这种问题而创建的. 例如,增加一 ...

  7. Linux之远程挂载SSHFS

    SSHFS(Secure SHell FileSystem)是一个客户端,可以让我们通过 SSH 文件传输协议(SFTP)挂载远程的文件系统并且在本地机器上和远程的目录和文件进行交互. SFTP 是一 ...

  8. 一步步教你学会如何区域录制屏幕转换成gif图

    现在各种表情包都是gif图,包括很多可能比较短暂的操作步骤,录制gif图也要远比录制成视频要来的方便很多. 1. GIF文件通常比视频文件小,这使得它们在网络传输中更加高效,尤其是在带宽有限的情况下. ...

  9. 超详细!SED流编辑器从入门到精通

    在文本处理的世界里,SED流编辑器宛如一把瑞士军刀,功能强大且实用.无论是处理海量数据文件,还是批量修改配置文件,SED都能展现出其独特的魅力.今天,就让我们一同深入探索SED的奇妙世界,掌握其基础知 ...

  10. 案例 | 某药企引进正也科技S2P系统 整合营销业务

    为了获取更大的市场空间,医药健康行业正迎来一波前所未有的产业升级.尽管不少企业取得了许多成绩,但仍面临诸多挑战. 天津某医药公司是集医药研发.药品生产.医药商业.大健康产业于一体的大型企业.敢为人先开 ...