欢迎来到入门教程网!

C#教程

当前位置:主页 > 软件编程 > C#教程 >

C#通过html调用WinForm的方法

来源:本站原创|时间:2020-01-10|栏目:C#教程|点击:

本文实例讲述了C#通过html调用WinForm的方法。分享给大家供大家参考,具体如下:

完整测试代码:

Form1.cs:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace test
{
  [System.Runtime.InteropServices.ComVisibleAttribute(true)]
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }
    private void Form1_Load(object sender, EventArgs e)
    {
      System.IO.FileInfo file = new System.IO.FileInfo(Application.StartupPath+@"\test1.htm");
      webBrowser1.Url = new Uri(file.FullName);
      webBrowser1.ObjectForScripting = this;
    }
    private void button1_Click(object sender, EventArgs e)
    {
      object[] objects = new object[1];
      objects[0]="C#访问javascript脚本";
      webBrowser1.Document.InvokeScript("messageBox", objects);
    }
    public void MyMessageBox(string message)
    {
      MessageBox.Show(message);
    }
  }
}

类WinOper:

[System.Runtime.InteropServices.ComVisibleAttribute(true)]
  public class WinOperationClass
  {
    public void MyMessageBox1()
    {
      MessageBox.Show(message);
    }
    public void ShowForm()
    {
      Form2 f2 = new Form2();
      f2.WindowState = FormWindowState.Normal;
      f2.Show();
    }
  }

网页:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
  <head>
    <title></title>
    <script language="javascript" type="text/javascript">
      function messageBox(message)
      {
        alert(message);
      }
    </script>
  </head>
  <body>
    <button onclick="window.external.MyMessageBox('javascript访问C#代码')">javascript访问C#代码</button>
      <a href="javascript:window.external.MyMessageBox1()">javascript访问C#代码</a>
    <a href="javascript:window.external.ShowForm()">javascript访问C#代码</a>
  </body>
</html>

补充:

webBrowser1.ObjectForScripting = this;

这句话的意思是webBrowser1的脚本执行的Com绑定的方法是 从Form1 来的,而MyMessageBox1和ShowForm却是在WinOperationClass类里面的,肯定是不行的。

第一个可以是因为form1里面有MyMessageBox这个方法,你吧MyMessageBox1和ShowForm移动到form1中或者把MyMessageBox移动到WinOperationClass里面,再把

webBrowser1.ObjectForScripting = this;

这句改成

WinOperationClass w=new WinOperationClass();
webBrowser1.ObjectForScripting = w;

就可以了

推荐第二种……把所有的 Com可见的方法放在一个类里面好维护

更多关于C#相关内容感兴趣的读者可查看本站专题:《WinForm控件用法总结》、《C#数据结构与算法教程》、《C#常见控件用法教程》、《C#面向对象程序设计入门教程》及《C#程序设计之线程使用技巧总结》

希望本文所述对大家C#程序设计有所帮助。

上一篇:C#基于TCP协议的服务器端和客户端通信编程的基础教程

栏    目:C#教程

下一篇:vista和win7在windows服务中交互桌面权限问题解决方法:穿透Session 0 隔离

本文标题:C#通过html调用WinForm的方法

本文地址:https://www.xiuzhanwang.com/a1/C_jiaocheng/6556.html

网页制作CMS教程网络编程软件编程脚本语言数据库服务器

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:835971066 | 邮箱:835971066#qq.com(#换成@)

Copyright © 2002-2020 脚本教程网 版权所有