我对 RichTextBox
控件感到困惑。
我的 WinForm
有一个 RichTextBox
控件,宽度为 100px。我想动态创建一个然后引用实例。
因此,假设在我的 Form
上我有一个名为 rtbResult
的 RichTextBox
我会认为我可以执行以下操作:
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";
现在在您的页面上您有名为 r1
的 RichTextBox
。如果你这样做:
r1 = r2;
您没有用新的 RichTextBox
替换表单中的控件,您只需将相同的引用分配给变量 r1
。在您的表单中,您仍然拥有旧 控件,但两个变量(r1
和r2
)指向同一个对象。
如果您不能简单地用新值更新原始 RichTextBox
,您可以做的是删除旧的并在相同位置添加新的:
r2.Bounds = r1.Bounds;
Controls.Remove(r1);
Controls.Add(r2);
这很天真,很多属性可能需要从旧的复制到新的(Dock
、TabIndex
等等),而且顺序是也很重要,因此您可能需要调用 Controls.SetChildIndex()
进行正确定位(这取决于您真正需要做什么以及您的代码如何)。
关于c# - 为什么我不能从 RichTextBox 的引用创建 RichTextBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15201309/