2014-12-21 101 views
-1

我有一個動態創建的按鈕數組,假設有8個按鈕,我想要的是,當我點擊一個特定的按鈕時,它的背景圖片被改變,按鈕的名稱存儲在鏈接列表中。當我再次單擊相同的按鈕時,背景圖片會返回到原始圖片,並且按鈕名稱將從鏈接列表中刪除。現在我可以完成第一部分,第二次單擊不能按照我的要求工作。不同功能的按鈕[]每次點擊一個特定的按鈕

基本上它是一個數據結構項目(購物商店),因此我使用鏈表,我有一個鏈表,其內容通過圖片框[]和標籤顯示。在這裏,我想要做的是當我點擊圖片框,該特定節點的內容被添加到一個新的鏈接列表(添加到購物車),當我再次點擊圖片框時,該特定項目從鏈接中刪除列表(從購物車中刪除)。第一次點擊它是做我想做的事情,但第二次點擊並不是真的有效。

這是一個數據結構項目,因此我不能真正使用任何內置的類爲鏈接列表,我不得不寫所有的方法,我自己,我做了,他們的工作。

cb[i].Click += (sender, e)=>{ 

if (flag == 0) { 
    // Console.WriteLine(obj.Retrieve(index).NodeContent); 
    // Console.WriteLine(obj.Retrieve(index).number); 
    inv.Add(obj.Retrieve(index).NodeContent, obj.Retrieve(index).number); 
    bill += Convert.ToInt32(obj.Retrieve(index).number); 
    cb[index].Image = Image.FromFile(@"F:\uni work\3rd semester\project images\rcart.jpg"); 
    flag++; 
} 
else if (flag == 1) 
{ 
    // Console.WriteLine(bill); 
    bill -= Convert.ToInt32(obj.Retrieve(index).number); 
    // Console.WriteLine(bill); 
    inv.Delete(index); 
    cb[index].Image = Image.FromFile(@"F:\uni work\3rd semester\project images\cart.png"); 
    flag--; 
} 
+0

向我們展示您的代碼並解釋a)問題所在以及b)爲什麼您使用鏈表而不是列表

+0

你有什麼問題?刪除圖片或從LinkedList中刪除項目? –

+0

請您澄清一下,如果這是WinForms,ASP.NET Web表單等。詳細說明您的問題是什麼(它正在做什麼或未做什麼)以及到目前爲止所嘗試的內容。如果可能,請包含代碼示例,請考慮https://dotnetfiddle.net/ – pwdst

回答

0

由於您使用的是鏈接列表,它確實有一個Contains方法和一個Remove接受字符串的方法。你還沒有具體說明你的問題是否應該起作用。當您將圖像分配給控件時,會丟失指示圖像的信息。

public partial class Form1 : Form 
{ 
    LinkedList<String> myList = new LinkedList<String>(); 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     for (int i = 0; i < 8; i++) 
     { 
      Button b = new Button() { Height = 30, Width = 70, Location = new Point(i, 50 * i),Name = "NewButton" + (i + 1).ToString() , Tag=i}; 
      b.Click += b_Click; 
      this.Controls.Add(b); 
     } 
    } 

    void b_Click(object sender, EventArgs e) 
    { 
     Button b = (Button)sender; 
     if(myList.Contains(b.Name)) //Check if button is in the List then Change Picture and remove 
     { 
      b.BackgroundImage = Properties.Resources.Peg_Blue; 
      myList.Remove(b.Name); 
     } 
     else 
     { 
      b.BackgroundImage = Properties.Resources.Peg_Red; 
      myList.AddLast(b.Name); 
     } 


    } 
} 
0

爲什麼不爲每個按鈕創建一個類,其中包含兩個圖像並在每次點擊之間進行切換?