如何将所有输入转换为RichTextBox为大写?

时间:2016-12-14 04:41:04

标签: c#

感谢您的帮助!!!! 我的主题将在此停止......

4 个答案:

答案 0 :(得分:0)

如果RTF是格式化字符串,这可能会为您提供帮助。

RichTextBox1.SelectAll();
string[] textArray = RichTextBox1.SelectedText.Split(new char[] { '\n', '\t' });
foreach(string strText in textArray)
{
    if(!string.IsNullOrEmpty(strText) && strText != "rtf")
        RichTextBox1.Rtf = RichTextBox1.Rtf.Replace(strText, strText.ToUpper());
}

RichTextBox.Rtf将包含类似此{\rtf1\fbidis\ansi\ansicpg1252\deff0\deflang17417{\fonttbl{\f0\fswiss\fprq2\fcharset0 Calibri;}{\f1\fnil\fcharset0 Microsoft Sans Serif;}} \viewkind4\uc1\trowd\trgaph108\trleft5\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \clbrdrt\brdrw15\brdrs\clbrdrl\brdrw15\brdrs\clbrdrb\brdrw15\brdrs\clbrdrr\brdrw15\brdrs的数据...当我们尝试对此类字符串执行操作时,它将抛出错误,文件格式无效但要从此问题中保存,我们可以使用RichTextBox的SelectedTextText,其中我们只获取RichTextBox的内部文本。然后我们可以用Upper Text替换文本。

修改

将Unicode字符串更改为大写后的要求。 RTF会将tôi tên là更改为此类\cf1\f1\fs20 t\'f4i t\'ean l\'e0,当我们在Replace(strText, strText.ToUpper());中找不到行tôi tên là的代码RichTextBox1.Rtf时,我使用了如果条件是查看字符串是否存在于rtf中,如果是,那么普通代码将起作用但是如果unicode字符串存在则将其更改为rtf以查看unicode字符串的rtf版本是什么。

另一个Stephan Bauer正确地建议如果rrtftfrttf在线上存在比发生改变案例的错误。所以也添加了这个功能。

string somevar = "rtf"; //string to eliminate
List<string> subStrings = new List<string>();
for(int i = 0; i < somevar.Length; i++)
{
    subStrings.AddRange(GetAllSubStrings(somevar, i + 1));
}
RichTextBox1.Rtf = RichTextBox1.Rtf.ToLower();
string[] textArray = RichTextBox1.Text.Split(new char[] { '\n', '\t' });
foreach(string strText in textArray)
{
    if(!string.IsNullOrEmpty(strText))
        if(!subStrings.Any(x => strText == x))
        {
            if(RichTextBox1.Rtf.Contains(strText))
            {
                RichTextBox1.Rtf = RichTextBox1.Rtf.Replace(strText, strText.ToUpperInvariant());
            }
            else
            {
                RichTextBox rt = new RichTextBox();
                rt.Text = strText;
                string rtftext = rt.Rtf.Substring(rt.Rtf.IndexOf("fs17") + 4);
                rtftext = rtftext.Substring(0, rtftext.IndexOf("par")-1);
                RichTextBox1.Rtf = RichTextBox1.Rtf.Replace(rtftext, strText.ToUpperInvariant());
            }
        }
}

这就是我们如何在rtf

的字符串中获取所有子字符串
public static IEnumerable<string> GetAllSubStrings(string input, int length)
{
    for(var i = 0; i < input.Length - length + 1; i++)
    {
        yield return input.Substring(i, length);
    }
}

答案 1 :(得分:0)

正如Mohit建议的那样:

private void button1_Click(object sender, EventArgs e)
        {
            richTextBox1.Text = richTextBox1.Text.ToUpper();
        }

答案 2 :(得分:0)

您无法直接将文本值设置为"Rtf"属性。 检查Rtf属性时,调试值类似于

"{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Microsoft Sans Serif;}}\r\n\\viewkind4\\uc1\\pard\\f0\\fs17\\par\r\n}\r\n"

请按照以下链接获取有关使用Rtf的更多信息。 http://www.codeproject.com/KB/cs/RTFSyntaxColour.aspx

Reset RTF in RichTextBox?

您最快的选择是使用RichTextBox的纯文本:

RichTextBox.Text = RichTextBox.Text.ToUpper();

答案 3 :(得分:0)

由于Rft.ToUpper()代码

而导致您RTF收到错误的原因
  

区分大小写

作为例子

  string  rft = {\\rtf1\\ansi\\deff0\r\n{\\colortbl;\\red0\\green0\\blue0;\\red255\\green0\\blue0;}\r\nThis is text}

它会在This is text时返回richTextBox1.Rtf = rft;,因为您可以看到格式位于lowercase中,因此当您应用Rft.ToLower()时,它不会产生影响,但是当您应用Rft.ToUpper()时1}}它的dosnt遵循RFT代码格式,因此它给出了错误

  

文件格式无效

因此,如果您想text richbox UpperCase使用<{p}}

richTextBox1.Text = richTextBox1.Text.ToUpper();