質問させていただきます。
現在、VB.net(2019)のDataGridViewで
列ヘッダーの複数行表示を行っています。
以下サイトを参考にすると複数行表示は出来ました。
[参考]https://masa49406.blogspot.com/2013/07/vbnet-dat …
ただ、特定の文字の場合のみヘッダから文字がはみ出てしまい、困っています、
--------------------------------------------------------------------
<再現方法>
・上記URLのソースをそのまま貼り付ける。
・「TextFormatFlags.EndEllipsis」を「TextFormatFlags.WordBreak」に変更する
(ヘッダータイトルを改行したい)
・「Column5」という文言を「abcd測量」に変更する
・上記の設定で実行し、5列目の幅を狭めると
「量」の文字の下部分がヘッダからはみ出て表示されてしまう
--------------------------------------------------------------------
「abc測量」では問題無いので「半角5文字+全角2文字」がだめなようです。
列を増やして横スクロースを動かしても、はみ出ている文字が表示され続けます。
さすがに見た目が悪いので消したいのですが、方法が分かっていません。
お手数をおかけしますが、よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
よく理解できてないので不明ですが、
rect.Height -= lineWidth
に問題があるかと思います。
(なぜHeightを決定するのにWidthが関係してくるのか??)
試しに
rect.Height = 30
とリテラル指定すると、その範囲で折り返されて表示されます。
(リテラルにしたので、他の列の描画のことは置いておいて)
そのかわり、グルーピングされている列の境界線が残ります。
グルーピングした時の背景に関わる描画と文字列の描画では、
描画範囲が異なるはずなのに、一緒になっているのでおかしいです。
rect.Height -= lineWidth
では、heightが32になり、その2の分、文字列描画がはみ出しています。
X, Y, Width, HeightすべてにlineWidth(1固定)を扱って算出しているように見受けられますが、明らかにおかしいでしょう。
ColumnHeadersDefaultCellStyleによってフォントやサイズを変更するとまともに描画されません。
また、グリッド全体のクリックや列ヘッダーのクリックでちらつきまくります。
列ヘッダーをクリックしてソートした時に既定で表示されるはずの▼、▲についての考慮もありません。
列位置を手動で変更した場合に激しくもちらつきますし、グルーピングが求めたものと異なる状態に陥ります。
正直記事にあるのは、特定環境下でのみ問題がない実装、というものであり、どんな場面でも問題がないかと言えば考慮が足らないものです。
(記事の作成者も、完全なライブラリとして提供しているわけではない)
GrapeCity SPREAD for Windows FormsやInfragistics Ultimate UI for Windows Formsなどを購入した方がよほど安定した動作が見込まれます。
前者は買い切り可能、後者はInfragistics Professional以上としてサブスクリプション契約です。
https://www.grapecity.co.jp/developer/spread-win …
https://jp.infragistics.com/products/windows-forms
費用捻出ができないのなら、記事内容をあくまで参考として、自力で作り上げるか、そもそも諦めるかになります。
前者は冒頭から記した通り、様々な状況への対応も考えなければならないため、膨大な知識と時間がかかります。
時間も金もかけられないなら諦めた方が無難です。
ご回答ありがとうございます。
文字列の幅やレクタングルのサイズの微調整が難しいので
本当に買ったほうが早いですよね。。。
列幅分はみ出すをいうご意見をヒントに、
今回としては、半角全角の混ざった文字の場合に
文字数などを調整して上寄せすることで対応しました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/09 10:07
- Excel(エクセル) エクセルの数式で教えてください。 5 2023/02/10 15:11
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
- Excel(エクセル) エクセルの数式について教えてください。 2 2023/03/04 09:54
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Excel(エクセル) エクセルにおいてセル内の文字を出来るだけ大きく表示する方法を教えてください。 4 2022/07/30 08:08
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- その他(パソコン・スマホ・電化製品) ワードでテキストボックス内の文字を連動させない方法 2 2023/02/09 16:56
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
このQ&Aを見た人はこんなQ&Aも見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
これ何て呼びますか
あなたのお住いの地域で、これ、何て呼びますか?
-
土曜の昼、学校帰りの昼メシの思い出
週休2日が当たり前の今では懐かしい思い出ですが、昔は土曜日も午前中まで学校や会社がある「半ドン」で、いつもよりちょっと早く家に帰って食べる昼ご飯が、なんだかちょっと特別に感じたものです。
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
C# DataGridView のヘッダーセル中央揃え
C言語・C++・C#
-
C# DataGridView のCellPaintingイベントで独自に描画する場合につきまして
C言語・C++・C#
-
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
-
4
DataGridViewでセルクリックイベントを発生させるには
Visual Basic(VBA)
-
5
データグリッドビューの結合セルに文字を表示させたい
Visual Basic(VBA)
-
6
DataGridViewの各セル幅を自由に決め、その幅で固定したい
Visual Basic(VBA)
-
7
データグリッドビューの一番最初の行に列を追加したい
Visual Basic(VBA)
-
8
VB.NET2005 TextBox 高さ(Height) 変更
Visual Basic(VBA)
-
9
GridViewの行の一部を複数行にする
Microsoft ASP
-
10
別フォームから戻ったときのイベント
Visual Basic(VBA)
-
11
DataGridView 列ごとの入力制限
Visual Basic(VBA)
-
12
C# dataGridViewの値だけクリア
C言語・C++・C#
-
13
【VB】コンボボックスにデータベースから取り出した値を入れたい
Visual Basic(VBA)
-
14
DataGridViewの特定列に入力されている重複チェックをしたい
Visual Basic(VBA)
-
15
文字列の後ろから必要分だけ削除したい。
Visual Basic(VBA)
-
16
VB.NETでコンボボックスの1行目を空白にしたい
Visual Basic(VBA)
-
17
DataGridView からの値取得に関して
Visual Basic(VBA)
-
18
VB.NETで小数点以下の桁数を取得したい
その他(ソフトウェア)
-
19
VB.NET DataGridView 縦スクロールバーを常に表示
Visual Basic(VBA)
-
20
DataGridViewで行の展開みたい事がしたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
word
-
Minecraft 統合版(PC)の描画距...
-
N88BASICのcircle 命令をDXlib ...
-
[VB.net] DataGridViewの列ヘッ...
-
FlexGridの一部のみ表示を更新...
-
塗りつぶしモード ALTERNATEと...
-
Form1 Load で実行されない。
-
VB6,リストボックスの特定行の...
-
MFC 6.0 VC++ で、処理が重くな...
-
TextBoxに文字を書いても表示さ...
-
Labelの文字をスクロールする際...
-
SHGetFileInfoでアイコンが取得...
-
Spreadで表全体を選択した場合...
-
google Colabでmatplotlibの描...
-
VC++プログラムをつかったBMP画...
-
物理シミュレーションの可視化(C#)
-
GDI+で高速な描画
-
VC++2010 描画処理について
-
OneNote 2010 文字と描画がずれる
-
エディットコントロールを再描...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Minecraft 統合版(PC)の描画距...
-
word
-
TextBoxに文字を書いても表示さ...
-
VB6,リストボックスの特定行の...
-
[VB.net] DataGridViewの列ヘッ...
-
MFCでOnPaintのタイミング
-
NVIDIAのシェーダーキャッシュ
-
C++にて、塗りつぶされた円を描...
-
UpdateData( FALSE); による文...
-
VC++プログラムをつかったBMP画...
-
MFCのタイマーのつかい方を教え...
-
CStaticコントロールの静的イメ...
-
画面全体を再描画させたい
-
OneNote 2010 文字と描画がずれる
-
VBAにGDI+を参照させる方法
-
Labelの文字をスクロールする際...
-
Form1 Load で実行されない。
-
InvalidateRectの使い方について
-
テクスチャに半透明ポリゴンを...
-
Windowのちらつき防止
おすすめ情報