2013-10-08 74 views
0

我製作了一個程序,它是一種wiki,但在一個程序中。我已經添加了很多pictureBoxes,並且我有3個過濾器來排序這些pictureBoxes:ROLE,ATTACK TYPE和NAME。 我想要做的是,如果您選擇攻擊類型RANGED,則會禁用其他具有與RANGED不同的攻擊類型的圖片框。使用ComboBox作爲過濾器

我試着用一個計時器比較每個英雄(我爲它做了一個不同的類),但我不知道該怎麼做。

我也試過這個

if(comboBox1.Text == "RANGED") { //do stuff } 

但我不知道我怎麼能訪問所有的英雄組成的數組我做了裏面,並檢查他們是否有atkType =不等。

我Hero.cs類:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Drawing; 

namespace WindowsFormsApplication1 
{ 
    public struct Hero 
    { 
     public string Name; 
     public string Role; /* carry, disabler, lane support, initiator, jungler, support, durable, nuker, pusher, escape */ 
     public string atkType; /* melee or ranged */ 
     public string Type; /* strength, agility or intelligence */ 
     public string imgName; 

     public Hero(string name, string role, string atktype, string type, string imgname) 
     { 
      Name = name; 
      Role = role; 
      atkType = atktype; 
      Type = type; 
      imgName = imgname; 
     } 

     public static Hero[] heroes = new Hero[] { 
      new Hero() {Name = "test", Role = "", atkType = "Melee", Type = "Strength", imgName = "test" } 
     }; 
    } 
} 

我已經成功地得到了過濾器的工作,但現在,這裏只有一個問題:我無法處置(圖片慣於卸載)當前加載的圖像和無法加載新的。 我試了一下:

if (melee == false && ranged == false) 
     { 
      for (int i = 0; i < Hero.heroes.Length; i++) 
      { 
       imgs[i].Load("http://cdn.dota2.com/apps/dota2/images/heroes/" + Hero.heroes[i].imgName + "_sb.png"); 
       comboBox3.Items.Add(Hero.heroes[i].Name); 
       //imgs[i].MouseHover += displayInfo(i); 
      } 

     } 
     if (ranged == true) 
     { 
      for (int i = 0; i < Hero.heroes.Length && Hero.heroes[i].atkType.Contains("Ranged"); i++) 
      { 
       imgs[i].Image.Dispose(); 
       imgs[i].Load("http://cdn.dota2.com/apps/dota2/images/heroes/" + Hero.heroes[i].imgName + "_sb.png"); 
      } 
     } 
+0

顛簸顛簸顛簸是什麼 – Alexandre

+0

你的意思是「無法處理」的圖像?一個錯誤,沒有發生,內存泄漏......? –

+0

好吧,圖像沒有被卸載。 – Alexandre

回答

0

的代碼可能是這樣的:

if(cmb.text=="goofy") 
    //Code 
else if(cmb.text=="mars") 
    //Other code 
else 
    //BLA BLA 
+0

是的,我想到這個,但我忘了提及,我有一個英雄類包含字符串,如atkType用於攻擊類型。那麼我怎樣才能訪問Hero數組(這是英雄)並檢查atkType是否爲RANGED? – Alexandre

+0

@AlexandreOliveira當然,如果Array是公共的,您可以直接訪問Array。 – Tinwor

+0

我需要一個循環來檢查數組內的條件嗎? – Alexandre