c# - 为什么我不能从 RichTextBox 的引用创建 RichTextBox

标签 c# .net richtextbox

我对 RichTextBox 控件感到困惑。

我的 WinForm 有一个 RichTextBox 控件,宽度为 100px。我想动态创建一个然后引用实例。

因此,假设在我的 Form 上我有一个名为 rtbResultRichTextBox 我会认为我可以执行以下操作:

    RichTextBox rtb = new RichTextBox();
    rtb.Text =  "Hello all";
    rtb.Width = 50;
    rtbResult = rtb;

当代码执行时,结果是我页面上的一个空 RichTextBox,原始大小为 100px(例如,宽度不是 50)。

请注意,在现场我使用文本突出显示,因此它必须是 RichTextBox,上面的示例被删除以使问题更简洁。

知道我做错了什么吗?

最佳答案

你所做的与此没有太大区别:

RichTextBox r1 = new RichTextBox();
r1.Text =  "I am RTB #1";
Controls.Add(r1);

RichTextBox r2 = new RichTextBox();
r2.Text =  "I am RTB #2";

现在在您的页面上您有名为 r1RichTextBox。如果你这样做:

r1 = r2;

您没有用新的 RichTextBox 替换表单中的控件,您只需将相同的引用分配给变量 r1。在您的表单中,您仍然拥有 控件,但两个变量(r1r2)指向同一个对象。

如果您不能简单地用新值更新原始 RichTextBox,您可以做的是删除旧的并在相同位置添加新的:

r2.Bounds = r1.Bounds;
Controls.Remove(r1);
Controls.Add(r2);

这很天真,很多属性可能需要从旧的复制到新的(DockTabIndex 等等),而且顺序是也很重要,因此您可能需要调用 Controls.SetChildIndex() 进行正确定位(这取决于您真正需要做什么以及您的代码如何)。

关于c# - 为什么我不能从 RichTextBox 的引用创建 RichTextBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15201309/

相关文章:

c# - 添加了 MRU 项的 WPF 组合框

c# - 如何在 ASP.NET Web API 内存测试中添加客户端证书?

c# - 如何使用 SpreadsheetGear 以编程方式设置已定义名称的范围?

c# - 使用带有 ASP.NET 的 OpenXML SDK 在内存中流式传输 Word 文档会生成 "corrupt"文档

c# - 向 WPF RichTextBox 上下文菜单添加自定义选项

C#:调试与 release.dlls

c# - 如何确定 DynamoDB 表是否为空?

c# - 使用 LINQ 对对象进行分页

c# 重写 RichTextBox 粘贴函数 - Win Form App

javascript - 富文本编辑器中的谷歌音译