C# winform里头插入了一个Webbrowser,browser载入一个网页a.html,a.html里头有onload="self.focus"。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# winform里头插入了一个Webbrowser,browser载入一个网页a.html,a.html里头有onload="self.focus"。相关的知识,希望对你有一定的参考价值。

现在的问题是,我把winform这个使用this.Hide隐藏掉,没想到由于a.html使用了self.focus(),在webbroswer载入a.html的时候,winform跑出来见人了,我的天,怎么处理呢?

参考技术A winform是webbroswer的容器,webbroswer是a.html的容器。如果要呈现这个a.html,那winform肯定得出现啊。
楼主能不能把情况说完整一点,例如你这个东西是干嘛的……
就楼主当前描述的情况来看,你把onload的代码去掉不久OK了

RichTextBox C# 设置插入符号位置 winforms

【中文标题】RichTextBox C# 设置插入符号位置 winforms【英文标题】:RichTextBox C# Set caret location winforms 【发布时间】:2011-06-22 14:20:16 【问题描述】:

我正在构建一个聊天应用程序,用户将其文本输入到富文本框中。

在富文本框中有一个初始文本,上面写着:“我:”。

现在,当用户按下主页按钮时,我希望插入符号位于“Me:”字符串之后。因此对于 Shift+Home 组合或三次鼠标单击或 Ctrl + 左光标等。

有什么办法吗?

我已经试过了

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetCaretPos(int X, int Y);

提前致谢, 盎司。

【问题讨论】:

【参考方案1】:

您可以使用富文本框的SelectionStartSelectionLength 属性设置插入符号的位置。将SelectionLength 设置为0,然后将SelectionStart 设置为您希望插入符号出现的位置。

SelectionStart 的文档说:

如果控件中没有选择文本,则此属性指示新文本的插入点或插入符号。


Win32 API 函数SetCaretPos 的级别太低,无法满足您的需求。

【讨论】:

【参考方案2】:

Winforms:RichTextBox.SelectionStart & 将 RichTextBox.SelectionLength 设置为 0。

WPF:RichTextBox.CaretPosition

【讨论】:

感谢宽限期,现在看来我复制了您的答案! ;-) 确实哈哈,我编辑完看到你已经发了。【参考方案3】:

使用Select 方法:

public void Select(
    int start,
    int length
)

richTextBoxUserText.Select(richTextBoxUserText.TextLength, 0);

【讨论】:

【参考方案4】:
RichTextBox1.SelectionStart = Pos;
RichTextBox1.SelectionLength = 0;
RichTextBox1.ScrollToCaret();

【讨论】:

【参考方案5】:

发现它在属性 SelectionProtected 上搜索

richTextBoxUserText.Text = INITIAL_TEXT;
richTextBoxUserText.SelectAll();
richTextBoxUserText.SelectionColor = Color.Red;
richTextBoxUserText.SelectionProtected = true;
richTextBoxUserText.SelectionLength = 0;
richTextBoxUserText.SelectionStart = richTextBoxUserText.TextLength + 1;

【讨论】:

@David,保护文本不被删除的解决方案是使用 SelectionProtected 属性。为了防止用户选择它,需要额外的工作......你在哪里告诉我这个? @os 您在原始问题的任何地方都没有提到保护文本。另外,我很确定 'richTextBoxUserText.SelectionStart = richTextBoxUserText.TextLength + 1' 会抛出一个超出范围的异常。 @David 是的,我没有提到,因为我不知道......而且它不会抛出 @oz 很抱歉我没有提到保护,但我没有看到你问题的那一部分。 "如果您将此属性设置为超出控件中文本长度的位置,则选择开始位置将放在最后一个字符之后。" - 这解释了它......你的草率编码得到了补偿! :)

以上是关于C# winform里头插入了一个Webbrowser,browser载入一个网页a.html,a.html里头有onload="self.focus"。的主要内容,如果未能解决你的问题,请参考以下文章

RichTextBox C# 设置插入符号位置 winforms

用C# Winform程序把图片插入到Excel中的代码

c# WINFORM 导入EXCEL数据覆盖问题

尝试将数据插入多个表时出错 [C# Winform SQL Server] [关闭]

C# winform中dataGridView控件如何插入、删除、更新记录,操作完成后怎样写回数并保存据库,怎么写代码?

如何在 C# 中由 .NET WebBrowser 控件托管的页面中调用 JavaScript 方法并将参数传递给 JavaScript 方法? [复制]