DateTimePickerコントロールを継承したコントロールを作成していますが、イベントのオーバーライドを行うとコンパイルエラーとなってしまいます。
どのようにしたらよいのか教えてください。
プロジェクトはVC++2005のWindowsフォームライブラリコントロールを使用しています。
### エラー内容 ###
error C2144: 構文エラー : 'void' は ';' によって先行されなければなりません。
error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
### コード ###
#pragma once
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
namespace DateCtrl2 {
public ref class DateCtrl2Control : public System::Windows::Forms::DateTimePicker {
・
・
・
protected: override void GotFocus(System::Object ^s, System::EventArgs ^e)
{
}
>protected: override void GotFocus(System::Object ^s, System::EventArgs ^e)
はなにを参考にしていますか?
C#?
文法が違うのでMSDNできちんと確認したほうよいでしょう。
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.control.gotfocus(VS.80).aspx
というか、イベントってオーバーライドして何かできるようになるんでしたっけ?
GotFocusしたときになにかさせたいならデフォルトでイベントを登録しておく
ってことでできないのでしたっけ?
イベント自体が仮想であれば,イベントのオーバーライド自体は可能です。
まぁ,普通は対になるOnGotFocusをオーバーライドすると思いますが……。
回答ありがとうございます。
お恥ずかしいですが、初心者のものでわかりませんでした。
OnGotFocusをオーバーライドをする方法をためしておりますが、以下のようなエラーが発生してしまいます。
コンパイル結果通り、'virtual'、'new'をつけてみましたがうまくいきません。お手数かけますが教えていただけますでしょうか。
### エラー内容 ###
基本 ref クラス メソッド 'System::Windows::Forms::Control::OnGotFocus' と一致しますが、'virtual'、'new' または 'override' に設定されていません。'new' (および 'virtual' でない) を仮定します
### コード ###
protected: override void OnGotFocus(System::EventArgs ^e)
{
}
ですので、MSDNをきちんと確認してください。
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.control.ongotfocus(VS.80).aspx
より
protected:
virtual void OnGotFocus (
EventArgs^ e
)
ですから、overrideする場合は後ろにoverrideキーワードを指定します。
Visual C++ Language Reference
override
http://msdn2.microsoft.com/ja-jp/library/41w3sh1c(VS.80).aspx
ようやく理解できました。
ありがとうございます。
ツイート | ![]() |