- - PR -
他のクラスからの描画
1
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-10-31 23:19
こんにちわ
Form1にOnPaintメソッドを作成し、Invalidate();で再描画というのを他クラスからするにはどうすればいいのでしょうか? 他クラスからInvalidateを行うと、 エラー CS0103: 名前 'Invalidate' は現在のコンテキスト内に存在しません。 Form1.Invalidate();とすると、 エラー CS0120: 静的でないフィールド、メソッド、またはプロパティ 'System.Windows.Forms.Control.Invalidate()' で、オブジェクト参照が必要です。 といったエラーが出てしまいます。他クラスから、Form1のOnPaintを動かすにはどうすればいいのでしょうか。。 よろしくお願いいたします。 | ||||||||||||||||
|
投稿日時: 2007-11-01 07:09
クラスではなく、インスタンスに対して行います。
| ||||||||||||||||
|
投稿日時: 2007-11-04 18:31
遅くなってしまいすみません。 フォームをインスタンス化しようと試みたのですが、うまくいきませんでした。 質問なのですが、VisualC#2005で、デザイナで既に生成されたForm1はどうすればインスタンス化するのでしょうか? Form1上や他クラス上で
と書いた結果、 'System.StackOverflowException' のハンドルされていない例外が テスト.exe で発生しました。 というエラーが出てしまいます。 [ メッセージ編集済み 編集者: 満月 編集日時 2007-11-04 18:32 ] | ||||||||||||||||
|
投稿日時: 2007-11-04 20:55
描画したいクラスに描画用のメソッドを実装しておいて、そのインスタンスからそのメソッドを呼び出す方がわかりやすいでしょう。
その Form1 は、コード上でしっかりとインスタンスを生成しています。 エントリ ポイント周辺をご覧になってはいかがでしょう。 この機会にマルチプル インスタンスの概念はよく知っておくべきでしょう。
この例外は書いた場所が悪かっただけで直接は関係ないでしょう。 (たとえば、コンストラクタや Load イベントなどに実装すれば無限ループになってスタックが溢れます) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||
|
投稿日時: 2007-11-04 21:00
インスタンスを作るなら new Form1(); であっています。 VisualStudioなどの開発環境でWindowsアプリケーションを組むと、 初期化などのコードが隠蔽されてしまっていますのでわかりづらいのですが、 プログラムはMain関数から始まりますので、 その中でForm1のインスタンスが作られています。
インスタンス作成中に 自分と同じクラスのインスタンスを作ろうとしてるのではないですか? 投稿内容を読む限り、 C#や.Netでのプログラミングの基礎、 オブジェクト指向プログラミングの基礎が よくわかっていないようです。 掲示板では基礎から全部説明することはできませんので、 入門書などを用いて基礎から勉強するといいでしょう。 [ メッセージ編集済み 編集者: れい 編集日時 2007-11-04 21:01 ] |
1