- - PR -
TabControl の指定したTabPageを実行時編集したい
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-03-14 16:54
WindowsXP VB2005EEでWindowsアプリケーションを開発います。
あるフォームにTabControlを配置しています。そしてTabPage2に四角の箱を描くために PictureBox1を配置し、FormsのLoadイベントハンドラに次のようなコードを記述しま したが、四角の箱を描くことは出来ません。現在TabPage2にButton1を配置し、 Button1イベントハンドラに下のコードを記述して箱を描写を確認しています。 質問は、TabControlの指定したTabPageにコードで何かを記載する場合は どんなイベントを使えばよいのでしょうか
_________________ | ||||
|
投稿日時: 2008-03-14 17:19
・描画は描画対象のコントロールの Paint イベントで行う
・描画に使用する Graphics はイベント引数 PaintEventArgs の Graphics プロパティに格納されているのを使用する です。 // 以前どこかの掲示板で書いたのをコピペ。 | ||||
|
投稿日時: 2008-03-14 18:13
Hongliangさん、ご解答ありがとうございます。
四角の箱を描くために事はTabPage2にButton1を配してそのイベントハンドラに 前記したコードを記載して、TabPage2を開いてButton1を押すことによって 正常に箱を描く事は確認できています。 質問の内容は、TabPage2を開くと自動的に四角の箱が描写される方法 (Button1を手動で押すのではなく)教えていただきたいのですが、 よろしくお願いいたします。 _________________ | ||||
|
投稿日時: 2008-03-14 19:47
既に的確な回答が出ていると思うのですが・・・。
Hongliangさんのレスを理解していますか? > TabPage2を開くと自動的に四角の箱が描写される方法 TabPage2が開くと、内在コントロールが描画されます。 この時PictureBox.Paintも当然呼び出されます。 ですので、PictureBox.Paintイベントにハンドラを追加して描画を行います。 つまりHongliangさんの発言どおり 描画は描画対象のコントロールの Paint イベントで行う ってことですよ。 | ||||
|
投稿日時: 2008-03-14 20:01
くまっちさん、ありがとうございました。またHongliangさん、大変失礼しました。
ご解答いただいた内容が理解できづ、四角の箱が描写方法をご指導いただいたものと 解釈いたしました。いまだに意味を理科いせておりませんが何度も読みかせして 収得いたします。 Hongliangさん、くまっちさん、本当にありがとうございました。 _________________ | ||||
|
投稿日時: 2008-03-14 20:15
くまっちさん、早速PictureBox.Paintイベントハンドラに次のように記述ましたが、
四角の箱が描写されません。何かの間違いでしょうか。よろしくご指導下さい。
_________________ | ||||
|
投稿日時: 2008-03-14 20:36
くまっちさん、Hongliangさん、ありがとうございました。
もしやと思ってTabPage2.Paintイベントハンドラに記述しましたら正常に描写できました。 ただ、マウスカーソルがPictureBox1の上に来ないと四角の箱が描写されません。 これはどういうことなのでしょうか。やもうえないのなら納得いたします。 _________________ | ||||
|
投稿日時: 2008-03-14 21:20
熟年プログラマーの「みつまん」です。いつもはROMを決め込んでいるのですが、たまには良いかなと仲間いりさせてもらいます。
先人(Hongliang)の回答 ・描画は描画対象のコントロールの Paint イベントで行う ・描画に使用する Graphics はイベント引数 PaintEventArgs の Graphics プロパティに格納されているのを使用するです。 ですべてです。 One.netさんは2番目の事項に対応していませんね。 私は、VB.netは苦手なのですが、C#でテストすると、先人(Hongliang)の回答でうまくできましたよ。 Dim g As Graphics = PictureBox1.CreateGraphics() とせずに 「イベント引数 PaintEventArgs の Graphics プロパティに格納されているのを使用する」ということです。VBで記述できなくてすみません。 ところで、その時には、 g.Dispose() はエラーになりました。まだ使うのだから「勝手に消すなよ」ということなのでしょう。 |