DOBON.NET DOBON.NETプログラミング掲示板過去ログ

(削除)

この記事は投稿者に削除されました
■No2996に返信(辛子明太子さんの記事)
> フォームのロードイベントで、
> フォーム内のパネルコントロール内への描画を行っているのですが、
> 何故か描画してくれません。
>
> Private Sub frmMakeQg_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
> |
> |
> |  中略(ActiveXコンポーネントの動的配置等)
> |
> |
> putData(Me.HScrollBar1.Value)
> End Sub
>
> Private Sub putData(ByVal i As Integer)
> Me.label1.Text = i  'ラベルにiを表示。
>
> 'Panel1のGraphicsオブジェクトを取得
> Dim g As Graphics = Me.Panel1.CreateGraphics
>     '黒で塗りつぶす
> g.Clear(Color.Black)
> '文字列を描画
> g.DrawString([文字列], [フォント], Brushes.White, 4, 4)
> g.Dispose() '描画用Graphicsオブジェクトを開放する。
> |
> |  中略
> |
> End Sub
>
> 上記のputDataプロシージャは、他の箇所からも呼ばれるのですが、
> 他の箇所から呼ばれた時はきちんと描画してくれるのです。
> つまり、フォームロード時(初回)だけ描画してくれないのです。
> [フォント]は、Declarationsで宣言してあります。
> Private [フォント] As New Font("MS UI Gothic", 20)
> [文字列]も空白ということはないようです。(デバッグしました)
> フォームロード時には、ActiveXコンポーネントの動的配置を行っています。
> これは、デザイナでActiveXコンポーネントを配置すると、
> フォームロード時のputData処理で、文字列の描画だけでなく、ラベルにiを
> 表示する処理も行ってくれませんでした。
>
> どなたか、この原因がわかる方いらっしゃいませんでしょうか
>

putDataメソッドのパラメータはIntegerですよね。上の場合だと、ちょっと
おかしい用意思うんですが。まず、
Me.Label.Text = i.ToString()
じゃないとだめだと思うんですが・・・
>Me.Label.Text = i.ToString()
>じゃないとだめだと思うんですが・・・
OptionStrict を Off にしているのでしょう・・・


描画された状態でフォームを最小化し元に戻したら理由がわかるのではないかと。
対処法はご自分で。
りょうさん、yさん、お返事ありがとうございます。
りょうさんのご指摘どおり、確かに、ちょっとおかしいですね。
一応、これでも表示できたのですが、ストリング変換させておきます。

また、yさんのいうように、フォームを最小化してまた元に戻したのですが、
やはり何も変化ありません。Invalidateメソッドを使っても、全く
描画されないのです。たぶん、最初の描画処理自体、なされていないのでは
ないかと思います。
一応、ブレークポイントを入れて、デバッグしながら各変数値、ロジック等
思惑通りに動いているのですが、何故か描画してくれないんです。

何か、メモリの問題等あるのかなと思い、より詳しい人におたずねしたいと
思い、書かせて頂きました。
どうか宜しくご教授お願いします。
再度、投稿しました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板