0

listboxaと someを含むウィンドウフォームがありますrichtextboxexlistboxいくつかの値が含まれています。から任意の値を選択すると、選択した値に従ってデータにバインドしますlistboxrichtextboxex

richtextboxリストボックスから値を選択するときにバインドされるテキストを強調表示する必要があります。

<<OverdueInvCount>> 件の請求書の期限が過ぎており、残高が <<OverdueInvTotal>> であることをお知らせします。ご請求額についてご不明な点がございましたら、お電話でお問い合わせください。喜んでご相談させていただきます。既に支払いを送信している場合は、このリマインダーを無視してください。

すべてのデータはデータベースから取得されます。

これらの言葉を強調<<OverdueInvCount>>したいと思います。<<OverdueInvTotal>>

4

2 に答える 2

0

このようなものが動作するはずです(これをテストしたところ..うまく動作するようです):

int openBrace = richTextBox.Text.IndexOf("<");
while (openBrace > -1) {
    int endBrace = richTextBox.Text.IndexOf(">", openBrace);
    if (endBrace > -1) {
        richTextBox.SelectionStart = openBrace;
        richTextBox.SelectionLength = endBrace - openBrace;
        richTextBox.SelectionColor = Color.Blue;
    }
    openBrace = richTextBox.Text.IndexOf("<", openBrace + 1);
}
于 2013-02-08T05:15:21.400 に答える
0

必要な機能を備えた新しいオブジェクトにキャストせずにそれを行う1つの方法は、オーバーライドすることですListBox DrawItem

void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
    var item = listBox1.Items[e.Index] as <Your_Item>;

    e.DrawBackground();
    if (item.fIsTemplate)
    {
        e.Graphics.DrawString(item.Text + "(Default)", new Font("Microsoft Sans Serif", 8, FontStyle.Regular), Brushes.Black, e.Bounds);
    }
    else
    {
        e.Graphics.DrawString(item.Text, new Font("Microsoft Sans Serif", 8, FontStyle.Regular), Brushes.Black, e.Bounds);
    }
    e.DrawFocusRectangle();
}

これをコンストラクターに追加します(InitializeComponent();呼び出し後)

listBox1.DrawMode = DrawMode.OwnerDrawFixed;
listBox1.DrawItem += new DrawItemEventHandler(listBox1_DrawItem);
于 2013-02-08T10:50:16.000 に答える