2

クラスからフォームを呼び出しているStackOverflowExceptionときに、が表示されます。

私の場合、これを使用してクラスをMainForm呼び出します。次に、私のクラスでは、usingを呼び出します。ループを作成しているように見えるので、これがStackOverflowの原因であると思います。Youtube.csYoutube yt = new Youtube();YoutubeMainFormMainForm main = new MainForm();

YoutubeクラスからMainForm、またクラスMainFormからクラスにアクセスする必要がYoutubeあるので、StackOverflowを発生させずにこれを回避する方法はありますか?

これは上からですMainForm

public partial class MainForm : Form
{
    public MainForm()
    {
        InitializeComponent();
    }

    Youtube yt = new Youtube();

そしてこれは上からですYoutube.cs

class Youtube
{
    MainForm main = new MainForm();
4

3 に答える 3

7

フォームオブジェクトをYouTubeクラスに渡し、YouTubeクラスでオブジェクトを使用します。

public class Youtube
{
     MainForm m_MainForm = null;
     public Youtube(MainForm frm)
     {
            m_MainForm = frm;
     }

}  
于 2012-08-03T14:08:50.487 に答える
3

はい、これが原因StackOverFlowExceptionです。

1つの方法は、コンストラクターを介してフォームをYoutubeクラスに渡すことです。


例:

MainFormクラスで:

Youtube yt = new Youtube(this)

public partial class MainForm : Form
{
    public MainForm()
    {
        InitializeComponent();
        yt = new Youtube(this);
    }

    Youtube yt = null;

Youtubeクラスで:

public Youtube(MainForm mainform)
{
    // do something with mainform
}
于 2012-08-03T14:09:27.477 に答える
3

パラメータとしてクラスに渡す必要がありMainFormます。YouTube

public class MainForm
{
   private Youtube youtube;
   public MainForm()
   {
       youtube = new Youtube(this);
   }
}

そして、Youtubeクラスにこの参照を保存します。

public class Youtube
{
   private MainForm form;

   public Youtube(MainForm form)
   {
       this.form = form;
   }
}
于 2012-08-03T14:10:06.710 に答える