0

些細なことのように思われる場合はお詫び申し上げますが、これを把握できないようです。ここでの他の質問は少し異なるので、ここに私の質問があります:

私は行くMainFormを持っています

public partial class MainForm : Form
{
    public MainForm()
    {
        InitializeComponent();
    }
    public void activateButton()
    {
        button1.PerformClick();
    }
//........

そこから電話activateButton()したいMain()

static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Form myForm = new MainForm();
    Application.Run(myForm);
    myForm.activateButton() // error
}

なぜパブリックメソッドactivateButton()が見えないのmyFormですか?

4

3 に答える 3

3

変数myFormのタイプはFormです。メソッドにアクセスできるように宣言すると、MainForm次のようになります。

MainForm myForm = new MainForm();
myForm.activateButton() // No error.
于 2012-10-08T01:38:00.367 に答える
2

他のコメント投稿者が指摘しているように、変数がMainFormではなくFormタイプであるため、エラーが発生します。しかし、まだ別の問題があります。Application.Run(form)を呼び出すと、アプリケーションはメインメッセージポンプループに入ります。これは本質的に、ユーザー入力をチェックし、Windowsメッセージディスパッチを処理する無限のwhile()ループです(フォームのWndProcメソッドをオーバーライドすることでこれにフックできます)。したがって、この後のMainのコードは、フォームを閉じるまで呼び出されません。

フォームが開いた後にactivateButton()メソッドを呼び出そうとしている場合は、フォームのコンストラクターで呼び出すか、OnLoad()をオーバーライドしてそこで呼び出すことをお勧めします。

于 2012-10-08T02:19:01.760 に答える
1
MainForm myForm = new MainForm();

元のコードでは、コンパイル時の型はFormであるため、表示さactivateButtonれません。

于 2012-10-08T01:38:06.583 に答える