• 締切済み

C# リストビューの特定のセルの特定文字色を変更

C#のリストビューの特定のセルの中の特定の文字の色を変えたいと思っています。 例えばリストビューの4行目の2列目の中に「INTEGER」という文字列が入れこまれていたら、「EGER」の色だけ赤く変えるということをやりたいのです。 リストビュー全体の文字色、あるいはリストビューの中の特定のセルの文字色を変えるやり方は色々ありましたが、さらにその中の特定の文字だけの色を変えるやり方はどこを探しても見つからなかったので質問させていただきました。 分かる方がいらっしゃいましたら、ご享受のほど、よろしくお願いします。

みんなの回答

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.2

>う~ん、ちょっとその方法ですと、色々問題が発生しそうです。。 軽く試した範囲だと…難しそうでしたかね。 比較用に1行目のものだけオーナードローしています。 1)描画時のY座標位置が標準描画(2行目)と異なる。  上に寄っています。 2)"INT"の描画時のX座標が異なる。  なのにMeasureStringメソッドで取得した幅の分ずらすと"EGER"の位置は揃う。 DrawDefaultせずに該当の列(SubItem)を全部自前でDrawStringメソッドで描画すれば…ある程度は揃えられるとは思われますが。

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

オーナードローでちまちま描画していくしかないんじゃないですかね。 http://msdn.microsoft.com/ja-jp/library/system.windows.forms.listview.drawsubitem%28v=vs.110%29.aspx 引数で渡されるDrawListViewSubItemEventArgs型からある程度の情報は得られます。 http://msdn.microsoft.com/ja-jp/library/system.windows.forms.drawlistviewsubitemeventargs%28v=vs.110%29.aspx ColumnIndexプロパティで列の位置が、SubItemプロパティ経由でTextプロパティで描画すべき文字列が。 Graphicsプロパティ経由のMeasureStringメソッドで描画する場合のサイズが。 # "INT"でサイズ計算すれば、続きの"EGER"の描画開始座標が算出可能でしょう。 # ただし…ベースラインがズレるかも知れませんけど。 # ベースラインとはなんぞや?という場合は「フォント ベースライン」辺りで検索してください。 文字列の描画はGraphicsプロパティ経由のDrawStringメソッドで。 通常描画をOSに任せる場合はDrawDefaultプロバティを設定してそのままreturnしてしまえばOKでしょう。 面倒なのは…フォーカスが当たっているとき、選択されている時などの状態の時ですかね。

wakaminmin
質問者

お礼

う~ん、ちょっとその方法ですと、色々問題が発生しそうです。。 やはり難しいことしなきゃいけないみたいですね…。 また違うやり方を考えてみたいと思います。 ありがとうございました。

関連するQ&A

  • 複数行を特定の列の各セルの中にある特定の文字列でソートする

    複数行を特定の列の各セルの中にある特定の文字列でソートしてその特定の文字のみが含まれる行のみ取り出す方法って簡単にできますか? たとえばA1からF100までのセルでC列のセルに特定の文字列が含まれる場合その行を集めて残りはそのしたの行に置き換えるとか。 特定の文字列はセルの文字列の中のどの部分にあるかは任意とします。よろしくおねがいします。 イージス

  • Jtableの特定のセルの背景色や文字色について

    Jtable内部の特定のセルの背景色や文字色、フォントの変更に関して質問があります。25行30列のJtableの20行20列目のセルの背景色だけ赤色にしたい場合、具体的にどの様にプログラミングすれば良いでしょうか? サンプルソースなどを教えてくださるとありがたいです! javaに関して詳しい方、ぜひともお力を貸してください!

    • ベストアンサー
    • Java
  • C# DataGridView特定セルの入力フォーム変更について

    C# DataGridView特定セルの入力フォーム変更について C# DataGridViewについての質問です。 DataGridViewで1列目のコンボボックスを選択した値によって、その行のみ 2列目の入力フォームを変更したいのですが、その様なことは可能でしょうか? 例.1行目1列目コンボボックス「a」選択時、1行目2列目コンボボックス表示   2行目1列目コンボボックス「b」選択時、2行目2列目テキストボックス表示   3行目1列目コンボボックス「c」選択時、3行目2列目チェックボックス表示 列全体の入力フォームを変更する処理なら分かるのですが、特定のセルのみ変更する 方法が分かりません。 もし可能であれば実現方法も教えて頂けると非常に助かります。 宜しくお願いします。

  • DataGridViewで特定の文字の色を変更するには

    DataGridViewで、特定のセルのうち、特定の文字の色を変更する方法はありますでしょうか? 例えば、 2行目2列目のセルに「あいう」と入っていた場合、 「う」のみを赤色にしたいのです。 過去の情報を色々とあさってみましたが、特定の文字のみを変更する方法は見つけられず、 もし可能でしたら、教えていただけると助かります。

  • リストビューの項目の内容を変更する方法は?

    お世話になります。 VS2005を使用しています。 VB.NETのリストビューで一覧を作ったのですが、その中の項目の内容をプログラム内から変更することは出来ないのでしょうか? 色々検索してみたのですが見つかりませんでした。 現在、リストビューには4つの項目があり、100行くらい有ります。 (1つ目の項目にはチェックボックス付き) その中の、項目の内容を変更したいのです。 やはり、以下のようにしなければいけないのでしょうか。 1)一旦対象行の内容を保存 2)対象行を削除 3)保存先で内容変更 4)リストビューに再追加 よろしくご享受下さい。

  • 特定文字列以下のセル削除

    こんにちは。 特定の文字列を含むセルから5行削除するマクロを作りたいのですが、 どのようにするとよいでしょうか。 特定文字列は、各列に1つあり、行の位置はバラバラです。 その特定文字列を含み以下5行分のセルを削除し、上に詰めたいと考えています。 初心者ゆえ、ご指導ください。

  • 特定の文字がある時のみセルを塗りつぶす方法

    おはようございます。 http://okwave.jp/qa/q9232296.html で、質問した者です。 添付したC列の特定の文字がある時にセルを塗りつぶす方法を知りたいです。 特定文字とは、【】で囲まれており、【お茶】【ジュース】【コーヒー】のように数種類あります。 例でいいますと、 あいうえお【お茶】 あいうえお【ジュース】 かきくけこ【ジュース】 かきくけこ【コーヒー】 (順不同) のようになります。【お茶】が入っていれば赤色、【ジュース】だったら青色、 【コーヒー】だったら黄色というようにセル内をC列のみに塗りつぶししたいです。 ご教授下さい。宜しくお願い致します。

  • 特定の文字列の隣のセルの文字色変更

    Excelに関する質問です。 A5~N42のセルに特定の文字列が入力されている場合、 A列、D列、G列、J列、M列、P列に入力されている文字の色を変えたいのですが、 何か良い方法を教えてください。

  • セル内の文字列から特定の文字の有無を検索したい。

    セル内の文字列から特定の文字の有無を検索したい。 (A1)セルに、文章が書かれており、その中に、(B1)セルに入力した文字列が含まれているか調べて、有無を(C1)セルに1,0で表示する方法を教えて下さい。よろしくお願いいたします。

  • 一つのセルに特定の文字が入ると隣のセルに条件に合った文字を入力したい

    列Aと列Bに特定の条件を入力します。 列Cに列Aに入力した行の文字を入力規則のリストで呼び出すと、列Dに列Aと同じ行に入っている列Bの文字を自動で入力するようにしたいのですが、どのようにしたらいいでしょうか? IF関数で条件分岐させようと思ったのですが列AもBも随時追加されていくのでこの方法が使えませんでした。

専門家に質問してみよう