2012-12-04 83 views
0
private void ProcessFrame(object sender, EventArgs arg) 
    { 
     Wrapper cam = new Wrapper(); 

     //show the image in the EmguCV ImageBox 
     WebcamPictureBox.Image = cam.start_cam(capture).Resize(390, 243, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC).ToBitmap(); 
     FaceDetectedLabel.Text = "Faces Detected : " + cam.facesdetected.ToString(); 
    } 

我在C#Windows應用程序的工作。我堅持一個簡單的問題:簡單的if else C#聲明

我怎樣才能做一個,如果用其他的條件:如果「cam.facesdetected.ToString()」如果等於或大於2做某事,別的什麼也不做。

我試過了,但它似乎沒有工作。誰能幫我?

 cam.facesdetected = abc; 
     MessageBox.Show("The detected faces is:" + abc); 

     if (abc >= 2) 
     { 
      //Do action 
     } 

     else 
     { 
      //Do nothing 
     } 
+0

什麼是abc變量? –

+0

「但它似乎沒有工作」是什麼意思?什麼是錯誤? – zimdanen

+1

它是'abc = cam.facesdetected;' – Prescott

回答

2

,你可以:

if (Convert.ToInt32(abc) > 2) 
    DoWork() 

雖然它很可能是明智的聲明ABC作爲一個整數,首先,如果它始終是一個整數。

+2

考慮到該字符串似乎來自用戶提供的輸入'int.TryParse'應該可以用來代替。 – Servy

+0

我只是在想同樣的事情。 – BrMcMullin

+0

同意。這個問題的細節有點含糊......所以我概括了答案。 – Michael

2

我相信你已經有了你的if語句。

abc = cam.facesdetected; 

現在您可以在abc上操作,如您所列。

0

只能通過指定萊夫特賽德變量rightside變量

LHS=RHS 

你錯誤地分配 它必須是abc = cam.facesdetected;

,您可以通過使用TryParse方法檢查是否大於&等於2

bool result = Int32.TryParse(abc, out number); 
     if (result) 
     { 
     if(number>=2) 
     { 
      //dowork; 
     } 
     } 
+0

我相信你的語法來調用TryParse是不正確的。看到這裏: http://msdn.microsoft.com/en-us/library/f02979c7.aspx – BrMcMullin

+0

@BrMcMullin:thnx校正 –

0

我認爲你應該使用它w沒有分配任何新的變量。沒有必要使用abc變量。您可以直接使用cam.facesdetected(我想這是一個數)是這樣的:

MessageBox.Show("The detected faces is:" + cam.facesdetected.ToString()); 

    if (cam.facesdetected >= 2) 
    { 
     //Do action 
    } 

    else 
    { 
     //Do nothing 
    } 
0

不使用.ToString()當您使用的數字。

你正在一個錯誤的方式分配變量,這應該是

var abc = cam.facesdetected; 

如果cam.facesdetected不那麼一些使用

var abc = Convert.ToInt32(cam.facesdetected); 

然後

if (Convert.ToInt32(abc) >= 2) 
{ 
    //Do action 
}