2013-05-02 59 views
0

我在執行設備從主窗體到另一窗體時出現問題我使用組合框來選擇設備,從主窗體選擇設備後,我單擊將打開另一窗體的按鈕,這個窗體有一個按鈕啓動當我點擊它時,它應該開始運行相機而不再選擇設備,因爲我已經以主要形式進行了操作,但我得到了一個異常情況說。如何使用C#中的Aforge直接顯示從主窗體執行設備相機到另一個窗體?

「對象引用未設置爲對象的實例」。

這是我的其他形式的代碼。

private void start_Click_1(object sender, EventArgs e) 
     { 
      if (start.Text == "&Start") 
      { 
       if (DeviceExist) 
       { 
        frmMain cam = new frmMain(); 
        videoSource = new VideoCaptureDevice(videoDevices[cam.comboBox1.SelectedIndex].MonikerString); // The exception shows here! 
        videoSource.NewFrame += new NewFrameEventHandler(video_NewFrame); 
        CloseVideoSource(); 
        videoSource.DesiredFrameSize = new Size(160, 120); 
        //videoSource.DesiredFrameRate = 10; 
        videoSource.Start(); 
        lblStat.Text = "Device running..."; 
        start.Text = "&Stop"; 
       } 
      } 
     } 

您認爲這裏的問題是什麼?

+0

請查看我添加異常發生的地方的代碼。 – user2262382 2013-05-02 13:21:45

+0

您好,我解決了這個問題,通過將所有代碼從主窗體複製到其他窗體,但是我有一些目標來實現,如果您閱讀下面的評論我說另一個窗體應該只包含一個開始按鈕而不是整個功能就像組合框一樣,我所做的只是隱藏組合框,並執行相機負載非常簡單的解決方案,但有效hahahahaha。 – user2262382 2013-05-02 16:18:07

回答

0
frmMain cam = new frmMain(); 
videoSource = new VideoCaptureDevice(videoDevices[cam.comboBox1.SelectedIndex].MonikerString); 

您創建的frmMain新實例cam = new frmMain()cam.comboBox1.SelectedIndex默認情況下爲-1訪問它。這會導致錯誤

+0

是的,我應該創建一個新的實例並將'comboBox1'修飾符設置爲public,以便我可以以其他形式訪問它,但無論如何還有另一種方法可以做到這一點嗎? – user2262382 2013-05-02 13:24:57

+0

另一種方式可以通過它,直到你需要它 – WhileTrueSleep 2013-05-02 13:26:16

+0

你是什麼意思傳遞它?請廣泛而具體。 – user2262382 2013-05-02 13:27:27

相關問題