![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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も見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
VB.NET DataGridView 縦スクロールバーを常に表示
Visual Basic(VBA)
-
VB.NETで他のプロジェクトで作成したフォームを使う方法
Visual Basic(VBA)
-
C# 画面のちらつきを解消したい
その他(プログラミング・Web制作)
-
-
4
ピクチャーボックスの大きさに合わせて画像を表示
Visual Basic(VBA)
-
5
Labelの文字をスクロールする際にちらつきが・・・
Visual Basic(VBA)
-
6
C#でフォームのオブジェクト名を変数名で指定
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windowのちらつき防止
-
C++にて、塗りつぶされた円を描...
-
word
-
CS_HREDRAW|CS_VREDRAWについて
-
OneNote 2010 文字と描画がずれる
-
MFCのタイマーのつかい方を教え...
-
VB.netでのライン描画方法がわ...
-
Minecraft 統合版(PC)の描画距...
-
TextBoxに文字を書いても表示さ...
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
エクセルで作った新しいウイン...
-
フォームでPDFを表示させた...
-
Alt+P,Alt+NをPostmessageで送...
-
勝手にウィンドウが開いて止ま...
-
ゲームでは結局どっちが良いの?
-
VB6でシャットダウン、ログオフ...
-
「アイテムは収集されました」...
-
コンボボックス内の文字サイズ変更
-
エクセル VBA 「Sub Auto_Open(...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MFCでOnPaintのタイミング
-
[VB.net] DataGridViewの列ヘッ...
-
word
-
NVIDIAのシェーダーキャッシュ
-
TextBoxに文字を書いても表示さ...
-
UpdateData( FALSE); による文...
-
VB6,リストボックスの特定行の...
-
PCで「使用可能な場合はグラフ...
-
VC++プログラムをつかったBMP画...
-
VBAにGDI+を参照させる方法
-
FlexGridの一部のみ表示を更新...
-
pset関数について
-
エクセルでガンチャートを作成...
-
C言語(dxlib)のDrawboxについ...
-
Form1 Load で実行されない。
-
InvalidateRectの使い方について
-
MFCのタイマーのつかい方を教え...
-
CStaticコントロールの静的イメ...
-
Windowのちらつき防止
-
GDI+で高速な描画
おすすめ情報