0

フォームを参照としてクラスに渡し、クラスオブジェクトがフォームからパブリックメソッドにアクセスできるようにします。私はいくつかの異なる場所でそれを試しましたが、それぞれにいくつかの制限があります。

イベントの外部からクラスをインスタンス化する方法はありますが、それでもフォームを渡すことはできますか?

namespace MyApplication
{
    public partial class Form1 : Form
    {
        //If I instantiate the class here, the form seemingly doesn't exist yet 
        //and can't be passed in using "this."
        Downloader downloader = new Downloader(this);

        private void Form1_Load(object sender, EventArgs e)
        {
            //If I instantiate the class here, the form can be passed in, but the
            //class object can't be seen outside of this event.
            Downloader downloader = new Downloader(this);
        }

        private void downloadButton_Click(object sender, EventArgs e)
        {
            //If I instantiate the class here, the form can be passed in, but the
            //class object can't be seen outside of this event.
            Downloader downloader = new Downloader(this);

            downloader.dostuff();
        }
    }
}
4

2 に答える 2

5

もうすぐです。次のように変更します。

namespace MyApplication
{
    public partial class Form1 : Form
    {
        private Downloader downloader;

        private void Form1_Load(object sender, EventArgs e)
        {
            this.downloader = new Downloader(this);
        }

        private void downloadButton_Click(object sender, EventArgs e)
        {
           downloader.Whatever();
        }
    }
}
于 2012-09-12T01:20:30.913 に答える
1
namespace MyApplication
{
    public partial class Form1 : Form
    {
        Downloader downloader;
        // either of the following two will work
        private void Form1_Load(object sender, EventArgs e)
        {
            downloader = new Downloader(this);
        }

        private void downloadButton_Click(object sender, EventArgs e)
        {
            downloader = new Downloader(this);
        }
    }
}
于 2012-09-12T01:20:50.273 に答える