
C#にて、WIndowsアプリを作成しています。
GridviewのcellEnterイベント発生時に、Panelに文字を記載する! というプログラムを
作成しています。表示の文字がPanel内を超過した際の事を考え、PanelのAutoscroll = Trueに設定しています。しかしながら、文字がPanelを超過してもうまくスクロールを表示してくれません。。。
どのようにすれば、解決できるのでしょうか。。。。
ご存知の方、ご教授願います。
以下、文字列記載のPaintメソッドです。
また、Paintメソッド呼び出しには、
this.pCon.Invalidate();
を利用しています。
private void pCon_Paint(object sender, PaintEventArgs e)
{
StringFormat strformat = new StringFormat();
if (this.pCon.Enabled == true)
{
SolidBrush brushText = new SolidBrush(ForeColor);
// 通常の文字列を描画する
e.Graphics.DrawString(
c, // 描画する文字列
this.Font, // フォント
brushText, // 色(ブラシ)
e.ClipRectangle,// 描画領域
strformat); // 文字列の書式
brushText.Dispose();
}
else
{
// 無効化された文字列を描画する
ControlPaint.DrawStringDisabled(
e.Graphics, // 描画オブジェクト
c, // 描画する文字列
this.Font, // フォント
this.BackColor, // 色
e.ClipRectangle,// 描画領域
strformat); // 文字列の書式
}
strformat.Dispose();
}
No.1ベストアンサー
- 回答日時:
Panel の AutoScroll プロパティは、
パネル内に配置したコントロールに対しての自動スクロールになります。
(コントロールがパネルの表示サイズを超えるような位置に配置されている場合にスクロールを表示)
プログラムで独自に描画する内容に対しての自動スクロールではありません。
独自の描画内容に対してスクロールバーで表示範囲を動かしたい場合、
独自にスクロールバーを制御して、スクロールバーの位置移動に反応して
位置に対応する適切な部分の内容を描画する、というような作りにする必要があります。
もし、代用できるのであれば、TextBoxを利用した方が良いのでは無いかと思います。
TextBox の MultiLine プロパティを true とし、
ScrollBars プロパティを Both などに設定して、
AppendText()メソッドなどで文字列を追加していきます。
ただし、MaxLengthで示される最大長を超える追加はできませんので、
適当なタイミングで一旦クリアするか先頭のほうの文字列を削除するなどの対処は必要となります。
丁寧なご回答ありがとうございます。
うまく実装出来ず、半ばあきらめ気味だったのですがおかげで意図するような
動きをしてくれるように変更することが出来ました。
ただ、torasさんが言われている通り、やはりTextBoxとPanelでは見た目上も
多少異なる為(Boxの右脇に常にスクロールが表示される[灰色で非表示形式だとしても])、
この点について、今回は良いですが、今後はエンドユーザ側にも確認を取り進めたいなと思います。(エンドユーザ>>お客さまにしろ、社内向けにしろ)
わかりやすく、出来ないだけでは無くご提案まで頂いて本当にありがとうございました。
完璧な回答です!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- Excel(エクセル) <スプレッドシート>IF関数の複数条件について 5 2022/10/27 14:38
- C言語・C++・C# 必ずyou bet と表示されます 2 2023/07/28 22:19
- 政治 私の発明した「二階建て漢字」は使えるでしょうか? 3 2023/02/08 16:40
- CAD・DTP 「機能ブロック図」の描画用フリーソフトを教えてください 1 2022/09/23 16:12
- gooブログ Twitterの動画画面をgooブログに埋め込めない 4 2022/06/03 16:40
- Excel(エクセル) Excel 文字列を結合するときに重複をなくしたい 関数・VBA 2 2022/12/12 10:40
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- C言語・C++・C# C言語の質問です。 以下の命令を実行するプログラムを作りました ①文字列aとbの長さを表示 ②aとb 1 2022/04/29 15:35
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
このQ&Aを見た人はこんなQ&Aも見ています
-
別のフォームで記述している関数を実行するには?C#
C言語・C++・C#
-
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
ピクチャーボックスの大きさに合わせて画像を表示
Visual Basic(VBA)
-
-
4
DataTableに入っているデータを全てinsertしたい!(C#)
Microsoft ASP
-
5
CloseとDisposeの違い
Visual Basic(VBA)
-
6
ラベルの文字列の長さが変わったときに、ラベル位置を自動で変更する方法
C言語・C++・C#
-
7
CSVファイルの中で、「 , 」カンマを使いたい
その他(コンピューター・テクノロジー)
-
8
データグリッドビューの一番最初の行に列を追加したい
Visual Basic(VBA)
-
9
C#で親にイベントを投げる方法
C言語・C++・C#
-
10
GridViewでハイライトを使用しない方法
Visual Basic(VBA)
-
11
【C#】 あるイベントから別イベントを呼び出す。
その他(プログラミング・Web制作)
-
12
Labelの文字をスクロールする際にちらつきが・・・
Visual Basic(VBA)
-
13
C#プログラムで、ボタンをショートカットキー付きで作りたいのですが、方
その他(プログラミング・Web制作)
-
14
インスタンス参照でアクセスできない。代わりに型名?
C言語・C++・C#
-
15
C# ListBoxのアイテムをユーザーが直接リネームできるようにすることは可能ですか?
C言語・C++・C#
-
16
C# DataTableに最後に追加した行をDataGridView上で選択状態にする方法は?
C言語・C++・C#
-
17
C# DataGridView の列ヘッダーのマウス右クリックイベントにつきまして
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TextBoxに文字を書いても表示さ...
-
[VB.net] DataGridViewの列ヘッ...
-
word
-
InvalidateRectの使い方について
-
クライアント領域を再描画させ...
-
VC++を使ってCで記述しグラフを...
-
google Colabでmatplotlibの描...
-
VC++プログラムをつかったBMP画...
-
OpenCV処理画像をpictureBoxへ。
-
DXライブラリについて(ゲーム...
-
Delphiでキューを作りたい
-
C#のタブコントロールについて...
-
panelのスクロール表示について
-
VB.netでのライン描画方法がわ...
-
StretchBlt関数について
-
CStaticコントロールの静的イメ...
-
円の描画の太さを指定できるCコ...
-
GDI+のDrawStringを使って文字...
-
WM_PAINTとBitBlt
-
CScrollViewの使用方法について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Minecraft 統合版(PC)の描画距...
-
[VB.net] DataGridViewの列ヘッ...
-
word
-
TextBoxに文字を書いても表示さ...
-
VB6,リストボックスの特定行の...
-
NVIDIAのシェーダーキャッシュ
-
panelのスクロール表示について
-
VC++プログラムをつかったBMP画...
-
VBAにGDI+を参照させる方法
-
google Colabでmatplotlibの描...
-
MFCでOnPaintのタイミング
-
MFCのタイマーのつかい方を教え...
-
UpdateData( FALSE); による文...
-
CStaticコントロールの静的イメ...
-
Form1 Load で実行されない。
-
InvalidateRectの使い方について
-
win32api 画面のちらつき
-
c++ ダブルバッファリング、以...
-
CDC(LineTo)で描画した線を透過...
-
BitBltでの表示での問題です。
おすすめ情報