在asp.net网页中托管Windows窗体用户控件



我创建了一个Windows窗体用户控件,需要将它放在网页中。我看到了很多链接:

  • https://web.archive.org/web/20210619191631/https://www.4guysfromrolla.com/articles/052604-1.aspx

  • http://blogs.msdn.com/b/andrewdownum/archive/2006/01/10/controlinbrowserintroduction.aspx

  • http://weblogs.asp.net/spano/archive/2007/09/19/hosting-a-windows-form-control-in-a-web-page.aspx

但它不起作用。

将该窗口窗体用户控件放入网页中。我在网页上写了以下代码。

<body>
    <form id="form1" runat="server">
    <div>
      <object id="MyWinControl" 
         classid="http:VideoShareUserControl.dll#VideoShareUserControl.UserControl1"
         height="100%" 
         width="100%" VIEWASTEXT />
    </div>
    </form>
</body>

但它不起作用。

所以请给我提供任何解决方案。

我想你忘了设置一些选项:

  1. 从项目属性页中的生成菜单中设置com互操作的寄存器
  2. 控件的代码应该是这样的(不要忘记Comvisible和Guid):

代码:

using System.Runtime.InteropServices;
namespace WindowsFormsControlLibrary1
{
    [ComVisible(true)]
    [Guid("CD46781D-B691-4287-B802-C9E2540AF08A")]
    [ProgId("WpfComHostDemo.WinformHostUserControl")]
    [ClassInterface(ClassInterfaceType.AutoDispatch)]
    public partial class UserControl1 : UserControl
    {      
        public UserControl1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show(Environment.UserName+" "+Environment.MachineName+" "+
                            Environment.OSVersion);
        }
    }
}
  1. 在您的html或asp.net页面中使用以下代码:

    <object classid="clsid:CD46781D-B691-4287-B802-C9E2540AF08A" />

  2. 将uour控件dll放在您的网站的根目录中

  3. 没有必要将其添加为引用

最新更新