0

VS2010、C# を使用して WinForm アプリケーションを開発していますが、テキスト ボックスで 2 つのフォントを使用する方法はありますか? たとえば、ユーザーが Tahoma フォントで入力している場合、キーの組み合わせを押すかボタンをクリックして、Times New Roman フォントで入力できます (Tahoma で入力したテキストはフォントを変更しないでください)。

私のオプションは何ですか?RichTextBox が私の唯一のオプションだと思いますが、それは正しいですか? その場合、RichTextBox のアイコンとツールバーを削除するにはどうすればよいですか?

Telerik やその他のサードパーティ製コンポーネントはどうですか?

4

2 に答える 2

2

あなたが言うように、RichTextBoxあなたが求めることをするのに役立ちます。ただし、アイコンとツールバーの削除に関するあなたの発言は理解できません。逆に、書式設定を有効にするには、独自のボタンを作成する必要があります。

例として、選択範囲の太字スタイルを切り替える方法を示します

private void boldToolStripButton_Click(object sender, EventArgs e)
{
    ToggleFontStyle(FontStyle.Bold);
    boldToolStripButton.Checked = !boldToolStripButton.Checked;
}

private void ToggleFontStyle(FontStyle style)
{
    int selStart = richTextBox.SelectionStart;
    int selLength = richTextBox.SelectionLength;
    int selEnd = selStart + selLength;

    if (selLength == 0) {
        return;
    }

    Font selFont = richTextBox.SelectionFont;
    if (selFont == null) {
        richTextBox.Select(selStart, 1);
        selFont = richTextBox.SelectionFont;
        if (selFont == null) {
            return;
        }
    }
    bool set = (selFont.Style & style) == FontStyle.Regular;

    for (int from = selStart, len = 1; from < selEnd; from += len) {
        richTextBox.Select(from, 1);
        Font refFont = richTextBox.SelectionFont;
        for (int i = from + 1; i < selEnd; i++, len++) {
            richTextBox.Select(i, 1);
            if (!refFont.Equals(richTextBox.SelectionFont))
                break;
        }
        richTextBox.Select(from, len);
        if (set) {
            richTextBox.SelectionFont = new Font(refFont, refFont.Style | style);
        } else {
            richTextBox.SelectionFont = new Font(refFont, refFont.Style & ~style);
        }
    }
    // Restore the original selection
    richTextBox.Select(selStart, selLength);
}

ご覧のとおり、これは非常に複雑です。現在のテキスト選択には、異なる形式のテキスト部分が含まれる可能性があるためです。このコードは、フォント スタイルを部分的に変更し、部分が一意の形式になるようにします。

ユーザー フレンドリーなインターフェイスを提供するには、テキスト選択イベントを処理し、選択の書式設定に従ってスタイル ボタンを切り替える必要もあります。つまり、ユーザーが太字のテキストを選択した場合、bold-toggle-button は押された状態になります。

于 2012-06-10T14:44:19.650 に答える
0

ボタンのクリックなどでフォントを変更するに
richTextBox1.Text += " ";
richTextBox1.Select(richTextBox1.TextLength,1);
FontDialog fd = new FontDialog();
fd.ShowDialog();
richTextBox1.SelectionFont = fd.Font;

は、クリック時にフォントを固定したい場合は、フォントダイアログボックスを表示するのではなく、ハードコードします。
*そして、私はあなたが何を意味するのか理解していませんhow can I remove RichTextBox icons and toolbars*

于 2012-06-10T15:48:58.730 に答える