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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[VB.net] DataGridViewの列ヘッ...
-
PCで「使用可能な場合はグラフ...
-
VB6,リストボックスの特定行の...
-
多角形の描画。(VC++)
-
C++にて、塗りつぶされた円を描...
-
UpdateData( FALSE); による文...
-
word
-
WM_SIZEとWM_SIZINGの違い (Win...
-
ちらつきを何とかしたい
-
CScrollViewの使用方法について
-
タブコントロール上のピクチャ...
-
MFCのタイマーのつかい方を教え...
-
VBAにGDI+を参照させる方法
-
VB.netでのライン描画方法がわ...
-
MFCタブコントロールのグラデー...
-
NVIDIAのシェーダーキャッシュ
-
アプリケーションのデザイン
-
ビューにビットマップファイル...
-
c++ ダブルバッファリング、以...
-
ペーパーマリオみたいにドット...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6,リストボックスの特定行の...
-
[VB.net] DataGridViewの列ヘッ...
-
NVIDIAのシェーダーキャッシュ
-
MFCでOnPaintのタイミング
-
TextBoxに文字を書いても表示さ...
-
word
-
UpdateData( FALSE); による文...
-
VC++プログラムをつかったBMP画...
-
InvalidateRectの使い方について
-
StretchBlt関数について
-
OneNote 2010 文字と描画がずれる
-
C# ラバーバンドの描画を快適に...
-
エクセルでガンチャートを作成...
-
C++にて、塗りつぶされた円を描...
-
VBAにGDI+を参照させる方法
-
MFC DrawText 背景色とフォント
-
GDI+で高速な描画
-
MFCのタイマーのつかい方を教え...
-
Labelの文字をスクロールする際...
-
FlexGridの一部のみ表示を更新...
おすすめ情報