小编Joh*_*ohn的帖子

RichTextBox.DetectUrls间歇性地工作

环境:WinForms,.Net 4.5.1,VB.net,VS 2013

将纯文本加载到RichTextBox时,它不会始终检测纯文本中的Url.我已经设置了RichTextBox.DetectUrls,但我不确定是不是问题.

如果我加载纯文本,其中可以包含零个或多个链接,有时它会识别链接(并格式化它们以便可以单击它们),有时它不会.即使重新加载完全相同的文本(即重新加载有时会触发Urls显示为正确的链接,有时也不会),此语句也是如此.

我在这里或其他地方没有找到任何讨论此事的内容.是否有任何已知原因会发生这种情况?

.net vb.net winforms

7
推荐指数
1
解决办法
271
查看次数

安装IE 10后,WebBrowser控件不会在双击时自动选择文本

注意:这是关于控件的内置行为,而不是创建双击事件.

我的一个项目使用Windows.Forms.WebBrowser控件作为HTML的编辑器和查看器.它已经工作好多年但突然我注意到,在我双击它之前会自动选择被点击的单词(这不是我的代码,只是控件发生了).

突然(不完全确定何时),双击控件中的文本(在编辑模式或视图模式下)都不执行任何操作.很难排除故障因为它不是我的代码所做的,但是,因为我过去依赖于这个功能,现在它正在影响我的最终产品.

知道最近会发生什么变化(在Windows或.Net中)会影响到这一点(我的应用程序的相同版本在较旧的Win7中运行良好但在最新的Win7中运行不正常)?另外,如何恢复以前的功能?我必须连接自己的双击甚至在DOM上然后开始解析文本以手动选择它(呃!)?

我一直在寻找这个问题的答案,但主要是我只是看到如何连接到DOM事件,没有关于最近会导致上述问题的变化.任何帮助将不胜感激.

当问题发生时,我正在使用VS 2010,VB,Win7 x64,IE 10.0.6,.Net 3.5(无论最新的是什么)(编译所以我怀疑它是VS或VB).

当我在Win7 x86上使用IE 8(Win7 Pro plain,安装了零更新)运行完全相同的代码(已编译)时,它的工作正常.

经过一些进一步的测试,在Win7 x86全新安装(一切都很好)上,一旦我安装IE 10并且没有问题,问题就开始发生了.所以,我很确定问题出在IE 10上.

重现步骤:

  1. 在VS 2010中创建一个新的VB.Net项目,目标是.Net 3.5
  2. 创建一个usercontrol <---这一步是关键
  3. 将webbrowser添加到usercontrol
  4. 将此代码添加到usercontrol

    Public Sub LoadHTML(html As String)
        WebBrowser1.DocumentText = html
    
        Do Until WebBrowser1.ReadyState = WebBrowserReadyState.Complete
            Application.DoEvents()
        Loop
    
        WebBrowser1.Document.Body.SetAttribute("contentEditable", "false")
    End Sub
    
    Run Code Online (Sandbox Code Playgroud)
  5. 将该控件添加到窗体

  6. 使用以下按钮向表单添加一个按钮.单击事件:

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        UserControl1.LoadHTML("<html><body>This is a test interesting is it not?</body></html>")
    End Sub
    
    Run Code Online (Sandbox Code Playgroud)
  7. 运行项目并单击按钮

  8. 然后,尝试双击"有趣"一词,注意它没有选择.

如果您直接在表单上抛出webbrowser控件,它将正常工作.问题出在usercontrol上(更新到IE10后只是一个问题).

我可以使用VS 2010使用.Net 3.5和4.0重现问题.我可以使用.Net 4.5使用VS 2012重现问题.

.net webbrowser-control winforms

6
推荐指数
1
解决办法
2677
查看次数

如何知道哪个是默认邮件客户端?

当我的应用程序启动时,我想知道是否安装了Outlook以及它是否是默认的邮件客户端.

对于安装我只检查一个注册表项,但如何知道它是否是默认的邮件客户端?

delphi outlook delphi-xe2

4
推荐指数
1
解决办法
1437
查看次数

将 List&lt;T&gt; 内容添加到 ConcurrentQueue&lt;T&gt; 的最快方法

我正在阅读这个问题并注意到 OP 正在迭代一个列表以将项目排队到 ConcurrentQueue 中。

ConcurrentQueue<TaskClass> cq = new ConcurrentQueue<TaskClass>();
for (int x = 0; x < TaskList.Count; x++)
    cq.Enqueue(TaskList[x]);
Run Code Online (Sandbox Code Playgroud)

这是必要的吗?

有没有办法:

  • 将大量对象添加到 ConcurrentQueue,或
  • 只需将类型列表转换/转换为 ConcurrentQueue

c# concurrent-queue

2
推荐指数
1
解决办法
2967
查看次数