プロが教えるわが家の防犯対策術!

ご質問があります。
フォームが二つ(フォームA、フォームB)あり、フォームAからフォームBを開く時に、フォームBにコードを渡す必要があり、フォームBのShow()をオーバーライドさせて(Show()に引数を設定し、引数でコードを渡し、フォームBの変数にコードをセットして使用する)、コードを使用します。

このShow()のオーバーライドのさせ方なのですが、以下ではエラーが出てしまいました。

public partial class FormB : Form
{
private string hacyucode;

public FormB()
{
InitializeComponent();
}

override void Show(string code)
{
hacyucode = code;
}
}

※「オーバーライドする適切なメソッドが見つかりませんでした。」というエラーが出てしまいます。

Show()の適切なオーバーライドの方法をご教授していただけませんでしょうか。
よろしくお願い致します。

A 回答 (1件)

Form.Showはvirtual修飾子がないのでオーバーライドできません。


仮にできたとしても、基底クラスに定義された引数の数・型、戻り値の型は変更できません。

オーバーライドせず普通に void Show(string code) とすれば、オーバーロードとして定義されます。
もちろんこの状態では、Show()も動作してしまいます。フォームの表示で絶対に code が指定されなければならないのなら、Showメソッドではなくコンストラクタの引数で受け取るほうがよいと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!