You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将C#文本框txtPath的值传递至HTML文本框txtWebPath?

当然可行!实现C#程序与内嵌HTML网页的路径值传递

这本质上是桌面应用和内嵌网页之间的JS交互问题,只要通过调用网页中预先定义的JS函数,就能轻松把C#里的路径值传递给HTML的文本框,下面给你详细拆解两种常用实现方案:

核心思路

在HTML页面中写一个接收路径并设置文本框的JS函数,然后在C#的按钮点击事件里,调用这个JS函数并传入txtPath的值即可,完全不影响你原本的拖拽填充逻辑。

具体实现方案(按控件类型分)

方案一:使用WebView2控件(推荐,基于现代Edge内核)

这是目前微软主推的网页嵌入控件,兼容性和功能都更优:

  1. HTML端准备接收函数
    在你的HTML页面中添加这个JS函数,用来处理C#传来的路径:
// 接收C#传递的路径,设置到txtWebPath文本框
function setWebPath(path) {
    const targetInput = document.getElementById('txtWebPath');
    if (targetInput) {
        targetInput.value = path;
    }
}
  1. C#端按钮点击事件处理
    在按钮的点击事件里,调用WebView2的方法执行上述JS函数:
private async void btnTransferPath_Click(object sender, EventArgs e)
{
    // 先做基础校验:路径不为空,且WebView2已初始化完成
    if (string.IsNullOrWhiteSpace(txtPath.Text) || webView21.CoreWebView2 == null)
        return;

    // 转义路径中的特殊字符,避免JS语法出错(比如Windows路径的反斜杠)
    string safePath = txtPath.Text.Replace("\\", "\\\\").Replace("'", "\\'");
    // 调用网页中的JS函数,传入处理后的路径
    await webView21.CoreWebView2.ExecuteScriptAsync($"setWebPath('{safePath}')");
}

小提示:记得要等WebView2的CoreWebView2InitializationCompleted事件触发后再进行交互,避免空引用错误哦。

方案二:使用传统WebBrowser控件

如果你的项目还在使用老的WebBrowser控件,也可以这样实现:

  1. HTML端同样需要上述的setWebPath函数
  2. C#端按钮点击事件处理
private void btnTransferPath_Click(object sender, EventArgs e)
{
    // 基础校验:路径不为空,且网页已加载完成
    if (string.IsNullOrWhiteSpace(txtPath.Text) || webBrowser1.Document == null)
        return;

    // 直接调用网页中的JS函数,传递路径参数
    webBrowser1.Document.InvokeScript("setWebPath", new object[] { txtPath.Text });
}

关键注意事项

  • 路径转义:Windows路径里的反斜杠\在JS中是转义字符,必须替换为\\,否则会导致路径显示错误或者JS语法报错。
  • 控件初始化:一定要确保WebView2/WebBrowser已经成功加载了目标HTML页面,不然找不到对应的JS函数或DOM元素。
  • 权限问题:如果你的HTML是本地文件,WebView2默认允许本地交互,无需额外配置;要是涉及远程网页才需要处理跨域,但你的场景是本地网站,基本不会有问题。

这样操作下来,点击按钮就能把C#里选择的文件路径无缝传到网页的输入框里啦,和拖拽填充的效果完全一致~

内容的提问来源于stack exchange,提问作者kiunx3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 11:22:27