我正在尝试为我的邮件发送应用程序构建模板编辑模块。 目前它看起来像这样:
右侧是可用变量列表,当我发送电子邮件时,这些变量将被替换为正确的值。
现在,当我双击列表项时,我会将右侧列表中的单词添加到模板中:
private void variablesLB_DoubleClick(object sender, EventArgs e)
{
var insert = variablesLB.SelectedItem.ToString();
var index = templateContentTB.SelectionStart;
templateContentTB.Text = templateContentTB.Text.Insert(index, insert);
templateContentTB.SelectionStart = index + insert.Length;
templateContentTB.Focus();
}
所有这些都很好用,但我无法防止用户手动更改关键字,因此他可以将光标放在«Email»
内并将其更改为«Emaail»
例如,在水晶报告中,在将数据库字段放入文本字段后,我能够选择整个名称,并通过按退格键来删除整个名称。
我知道WinForms TextBox内部没有构建此功能,并且我找不到任何可以执行此操作的组件,所以我决定在这里提问,也许有人需要相同的功能或者能够指导我如何实现它。
总而言之,我需要能够在文本框中添加标签,文本框应将此标签视为整体-可选择、可移动且用户应该能够删除它但不能编辑它。
IsReadOnly
的标志吗?您可以将其设置为True
。 - user3596113RichTextBox
和一些自定义对象(图片?)来实现标签。另一个可能性是将标签作为文本更改(也是RichTextBox
),以便用户看到他是否“破坏”了某些内容。由于用户被允许编辑文本,也许您可以向他展示一个完整的文本?其中<Name>
已经被替换为例如John
? - Sinatr