【问题标题】:C# Winforms Custom WebBrowser Control Needed需要 C# Winforms 自定义 WebBrowser 控件
【发布时间】:2011-04-28 16:10:09
【问题描述】:

我最近一直在网上搜索一个现有的控件,该控件的作用类似于网络浏览器控件,具有一些我需要的特定功能。

我还没有找到有它们的,所以我想在这里留下一个问题,希望有人能指出我如何做到这一点,或者甚至给我一些关于如何从头开始创建的提示,最终将成为解决方案。

我需要一个允许我预览网页的控件,同时它允许我以编程方式对其进行编辑。我不需要将 HTML 或文本直接写入编辑器,但需要能够单击按钮,并将特定的 HTML 代码插入到文档中,并刷新预览。

我还需要能够捕获控件上的点击事件。例如,我想单击控件上的特定位置并获取位于鼠标位置的 HTML 元素。关于事件,我还需要能够捕获拖放,而且浏览器控件本身似乎也不支持这一点。

尽管我尝试了一些不同的控件,但它们都没有这些功能,或者允许我添加它们。所以,如果有人能指出我正确的方向,或者如果我错误地假设无法使用任何现有的 .NET 控件来完成,我将不胜感激。

提前感谢您的帮助。

【问题讨论】:

    标签: c# winforms browser controls


    【解决方案1】:

    两个建议:

    在浏览器的客户端有 DOM 访问器,可以让您通过鼠标位置获取 HTML。查看此页面以进行演示:

    http://www.permadi.com/tutorial/cssGetElementUnderMouse/index.html

    大概您可以将 javascript 写入您的 HTML 中,其中包含挂钩以在您的父 UI 代码中引发事件,进而与浏览器交互。从 DOM 中获取 HTML 元素名称并将其传递回 UI,UI 将其用作 HTMLDocument 中的光标,这将是一个好的开始。

    您可以从那里扩展该模型以支持诸如拖放或动态刷新之类的想法或您拥有的东西。

    我不知道有什么开箱即用的方法。我确实环顾四周,发现了这个工具,它自称为免费并提供源代码,但我不知道它的许可模式是什么,所以联系作者

    http://kompozer.net/features.php

    【讨论】:

    • 我没能回答这个帖子,但是 kompozer 似乎不是一个与 C# 一起使用的组件,而是一个独立的工具本身。我又开始搜索了,因为 ModelText 让我发疯了。我在尝试添加一些 HTML 时遇到了一些“意外”错误,这些错误并没有为我提供有关如何修复任何问题的大量信息。
    【解决方案2】:

    据我所知,没有这样的控制。此外,从头开始编写一个能够正确呈现所有现代 HTML/CSS 的程序将是一项艰巨的任务。

    即使是像 Microsoft Expression 这样的产品,在显示正在编辑的 HTML 的方式上也往往有一些怪癖。

    恐怕你的工作已经完成了。

    【讨论】:

    • 是的,实际上我已经考虑过......创建一个使用 CSS 呈现 HTML 的控件确实不容易。但是那里有一些控件,它们似乎比浏览器控件做更多的事情,我怀疑它们是从头开始的......
    • @BlunT:嗯,有开源渲染引擎。因此,您可以采用类似的方法并对其进行修改以允许编辑。但我或多或少地从头开始考虑这一点,因为您需要使用原始源代码,而不仅仅是使用组件。
    【解决方案3】:

    【讨论】:

    • ModelText 是我尝试过的控件之一,并使用他们提供的示例进行了测试。我已经尝试过捕捉事件,但我不能,但现在我又尝试了一次,似乎至少可以让一些部分工作。我会再深入一点,让你知道它是否能够满足我的所有需求。你有这个控件的经验吗,或者如果我有任何疑问可以去哪里讨论?
    • 我以前从未使用过它。我希望它能奏效,因为它听起来很有用。
    • 我在以编程方式设置 HTML 的内容时遇到了一些问题,但是当我单击页面时,我设法捕获了 HTML 控件的事件。这是一个开始!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 2012-08-30
    相关资源
    最近更新 更多