2013-12-18 58 views
0

我有一組名爲像這樣的對象:如何投放字符串爲int

_1,_2,_3 .... _n 

不是數組,只是一堆uinto自定義控件對象。我想把這個名字轉換爲int。首先我刪除_,但如果使用

private void Superficie_MouseDown(object sender, MouseButtonEventArgs e) 
    { 
     int index = 0; 
     Shape myShape = ((Shape)sender); 
     string lcNombre = myShape.Name.Remove(0, 1); 

     //-------------------------------------------------------------------- 
     // Those are my tryes 
     // Doesn't work because it must expect a nullable value 
     index = lcNombre as decimal; 

     // Doesn't work Can't convert string to int 
     index = (int)lcNombre; 
     //-------------------------------------------------------------------- 


     if (index > 0) 
     { 
      bool lIsSelected = !Pieza.Superficies.Where(x=>x.Id == index).First().IsSelected; 
      Pieza.Superficies.Where(x => x.Id == index).First().IsSelected = lIsSelected; 

      if (lIsSelected) 
       myShape.Fill = new SolidColorBrush(SystemColors.HotTrackColor); 
      else 
       myShape.Fill = new SolidColorBrush(SystemColors.ControlLightLightColor); 
     } 
    } 

我該怎麼做才能施放它?

+0

我必須失去它。時間去睡覺;-) – Harrison

回答

5

最直接的方法是

index = int.Parse(lcNombre); 

如果你不能完全確定lcNombre是否真的是一個整數,你可以改用

int result; 
bool isInt = int.TryParse(lcNobre, out result); 

最後,你可以使用

index = Convert.ToInt32(lcNobre); 

這種方法(如int.Parse())將在輸入值不是conv時拋出FormatException可修正爲一個整數。

0

我最喜歡的方式做到這一點是讓一個擴展方法如下

public static class ExtensionMethods 
{ 
    public static int? AsInteger(this string str) 
    { 
     int value; 
     if (int.TryParse(str, out value)) 
     { 
      return value; 
     } 
     else 
     { 
      return null; 
     } 
    } 
} 

,那麼你可以在此

index = lcNombre.AsInteger() ?? 0; 
1

試試這個

int result=0; 
Int32.TryParse(lcNombre,out result); 
0
string strArr[] = myShape.Name.Split('_',StringSplitOptions.RemoveEmptyEntries) 

int num; 
int.TryParse(strArr[0],num); 
+0

關心你的答案詳細說明? – thomaux