
C#でわからないことが2,3あるのですが、このmsndのサンプルで
public class FirstControl : Control{
public FirstControl() {}
protected override void OnPaint(PaintEventArgs e) {
// Call the OnPaint method of the base class.
base.OnPaint(e);
// Call methods of the System.Drawing.Graphics object.
e.Graphics.DrawString(Text, Font, new SolidBrush(ForeColor), ClientRectangle);
}
}
これのprotected override void OnPaint(PaintEventArgs e){}
の部分なのですが、なぜprotected overrinde修飾子なのでしょう
何をオーバーライドしてるのですか?他のサンプルにも構文のように出てくるのですが。
あとOnPaintはメソッドのようですがイベントを発生させるにはデリゲートではないのでしょうか
あとPaintEventArgsはクラスということですがnewはいらないのでしょうか。staticがどこかにあるのでしょうか
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
> の部分なのですが、なぜprotected overrinde修飾子なのでしょう
> 何をオーバーライドしてるのですか?他のサンプルにも構文のように出てくるのですが。
System.Windows.Forms.Control.OnPaintをoverrideしています。
元のメソッドがprotectedなので,可視性はprotectedのままになります。
overrideなので,継承元を辿っていけば元になるメソッドがあります。
http://msdn.microsoft.com/ja-jp/library/system.w …
> あとOnPaintはメソッドのようですがイベントを発生させるにはデリゲートではないのでしょうか
イベントを発生させることができるのは,イベントを定義したクラスのみです。
Paintイベントは,System.Windows.Forms.Controlのメンバなので,System.Windows.Forms.Control.OnPaintメソッドがイベントを発生させます。
また,イベントの前にOnが付いたprotected virtualなメソッドでイベントを発生させるのは,MSのガイドラインに沿った作りです。
http://msdn.microsoft.com/ja-jp/library/ms229011 …
> あとPaintEventArgsはクラスということですがnewはいらないのでしょうか。staticがどこかにあるのでしょうか
クラスのインスタンスが引数eに渡されてくるのです。
なので,なぜ「newはいらないのか」という発想になるのかが不思議です。
C#の文法をちゃんと勉強しましょう。
http://msdn.microsoft.com/ja-jp/library/ms173114 …
http://msdn.microsoft.com/ja-jp/library/51y09td4 …
http://msdn.microsoft.com/ja-jp/library/8f1hz171 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
CloseとDisposeの違い
Visual Basic(VBA)
-
C#において、同じインスタンスを何度もnewしてよいでしょうか。
その他(プログラミング・Web制作)
-
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
-
4
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
5
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
6
C# 配列の変数宣言について。
C言語・C++・C#
-
7
【C#/Java?】try-catchでcatchせずにfinallyは一般的?
その他(プログラミング・Web制作)
-
8
C#でフォームのオブジェクト名を変数名で指定
C言語・C++・C#
-
9
MFCでOnPaintのタイミング
C言語・C++・C#
-
10
インスタンス参照でアクセスできない。代わりに型名?
C言語・C++・C#
-
11
C# ReadOnlyのTextBoxで
C言語・C++・C#
-
12
C#でButtonのフォーカス枠を消したいのですが
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別クラスのmainメソッドの実行
-
Java初級 引数に適用できません
-
レコード件数の表示
-
return new使用時
-
エクセルVBAで、条件に一致する...
-
変数名の付け方
-
(vba)他のアプリケーションの右...
-
複数の変数を宣言する時、同時...
-
PHPExcel使用で2枚目のシートを...
-
vb.netでFAXを送信する方法
-
オブジェクトレベルとメタレベル
-
恋愛
-
VBAもしくはVB6:クラスの中で...
-
SwingとEDT(イベントディスパッ...
-
標準モジュールとクラスモジュ...
-
コマンドプロンプト実行後に画...
-
僕の出身中学校は200人同級生が...
-
ODBCでMoveNextがうまく動作し...
-
重複エラーを解決するには
-
ATLとMFCの違いは何でしょうか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコード件数の表示
-
Java初級 引数に適用できません
-
String.containsの反対機能はあ...
-
別クラスのmainメソッドの実行
-
abstract と static を一緒に付...
-
StringBufferからStringへキャ...
-
説明文書でのメソッド・変数の...
-
Java初心者です、エラーの意味...
-
YYYYMMDD書式の日付に対する適...
-
コマンドライン引数のチェック
-
Google Apps Script で getRang...
-
staticのメリット、デメリット
-
メソッドの引数に指定されてい...
-
スーパークラスからサブクラス...
-
return new使用時
-
メソッド宣言の戻り値の型にク...
-
インターフェースについて
-
CSVから読み込んだデータの保持...
-
問題の意味が分かりません
-
JavaからCへ
おすすめ情報