要求
我正在使用Vistual Studio 2005.我需要Textbox
我尝试过的解决方案
将FontStyle设置为粗体的普通文本框 问题:我可以粘贴日文文字,文字始终保持粗体。唯一的问题是文本框不支持将文本突出显示为用户类型。
RichTextBox:突出显示TextChanged事件处理程序中的文本。
handler = new System.EventHandler(richTextBox1_TextChanged);
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
this.richTextBox1.TextChanged -= this.handler;
int index = richTextBox1.SelectionStart;
richTextBox1.Select(0, richTextBox1.Text.Length);
richTextBox1.SelectionBackColor = Color.White;
richTextBox1.SelectionLength = 0;
if (richTextBox1.Text.Length > 100)
{
richTextBox1.Select(100, richTextBox1.Text.Length);
richTextBox1.SelectionBackColor = Color.Yellow;
richTextBox1.SelectionLength = 0;
}
richTextBox1.SelectionStart = index;
this.richTextBox1.TextChanged += this.handler;
}
Highthing工作正常。但是有以下问题。
当我将日文文本粘贴到richtextbox时,它会显示为Squre框。但是如果我以编程方式分配相同的日语文本,它会正确显示。即使在普通文本框中,粘贴的文本也会正确显示。所以不确定richtextbox有什么问题。
我无法禁用richtextbox的格式。例如如果我复制一些带有超链接的html文本并粘贴在richtextbox中,我会看到超链接。我的要求是说除了BOLD之外不允许任何格式化。
我想使用Windows窗体控件来实现此功能。第三方控制将是我的最后选择。
有人可以帮忙吗?
提前致谢!
〜Sambha
答案 0 :(得分:0)
我有一个解决方案,但不确定这是否是有效的方法,如果它会导致一些其他问题。
解决方案:从RichTextBox和ovverride KeyDown事件创建子类。检查是否按下了Ctrol + V或Shift + Inst键,使用DataFormats.UnicodeText调用paste方法。
class MyRichTextBox : RichTextBox
{
protected override void OnKeyDown(KeyEventArgs e)
{
switch (e.KeyData)
{
case (Keys.Shift | Keys.Insert):
case (Keys.Control | Keys.V):
this.Paste(DataFormats.GetFormat(DataFormats.UnicodeText));
e.SuppressKeyPress = true;
return;
}
base.OnKeyDown(e);
}
}