
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で質問しましょう!
似たような質問が見つかりました
- 英語 課題でこの英語の文章のSVOの分析や()等の括りを出されたため、できるだけ完璧にしたいのですが、自身 1 2022/12/16 13:29
- Java java final 1 2022/06/10 22:49
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- Java eclipse実行ができない 2 2022/07/27 04:47
- 英語 英文解釈 4 2023/07/26 13:54
このQ&Aを見た人はこんなQ&Aも見ています
-
CloseとDisposeの違い
Visual Basic(VBA)
-
C#において、同じインスタンスを何度もnewしてよいでしょうか。
その他(プログラミング・Web制作)
-
C#でフォームのオブジェクト名を変数名で指定
C言語・C++・C#
-
-
4
C# 配列の変数宣言について。
C言語・C++・C#
-
5
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
6
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
7
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
8
他クラスからForm1内コントロルの操作方法を教えて(C#プログラミン
その他(プログラミング・Web制作)
-
9
間違えて配置してしまったコントロールの削除
Visual Basic(VBA)
-
10
【C#/Java?】try-catchでcatchせずにfinallyは一般的?
その他(プログラミング・Web制作)
-
11
フォームの存在をチェックする方法
Visual Basic(VBA)
-
12
MFCでOnPaintのタイミング
C言語・C++・C#
-
13
インスタンス参照でアクセスできない。代わりに型名?
C言語・C++・C#
-
14
C# ReadOnlyのTextBoxで
C言語・C++・C#
-
15
C# Listを使わずに2次元配列の動的確保をしたいです。
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
レコード件数の表示
-
Java初級 引数に適用できません
-
テキストファイルに書かれた文...
-
別クラスのmainメソッドの実行
-
String.containsの反対機能はあ...
-
StringBufferからStringへキャ...
-
コマンドライン引数のチェック
-
説明文書でのメソッド・変数の...
-
C言語での文字列より値を抜き出す
-
CSVから読み込んだデータの保持...
-
Java初心者です、エラーの意味...
-
インスタンス変数へのアクセス...
-
System.out.print
-
getBinaryOutputStream()が使え...
-
クラスを作るとメソッドの数が...
-
JavaからCへ
-
スーパークラスからサブクラス...
-
メソッドの引数に指定されてい...
-
javaに"search"という関数 or ...
-
乱数について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Java初級 引数に適用できません
-
String.containsの反対機能はあ...
-
abstract と static を一緒に付...
-
レコード件数の表示
-
コマンドライン引数のチェック
-
StringBufferからStringへキャ...
-
別クラスのmainメソッドの実行
-
Google Apps Script で getRang...
-
JUnitのテストメソッドごとのメ...
-
なぜprotected overrideなのか
-
C言語での文字列より値を抜き出す
-
Java初心者です、エラーの意味...
-
メソッド宣言の戻り値の型にク...
-
シェルスクリプトからのJavaメ...
-
YYYYMMDD書式の日付に対する適...
-
メソッドの引数に指定されてい...
-
System.out.print
-
クラスを作るとメソッドの数が...
-
Strutsでチェックボックスの値...
-
public static void main (Stri...
おすすめ情報