2009-10-11 21 views
1

我想創建一個文本塊數組。我正在嘗試爲每個創建的文本塊創建一個新事件。我沒有問題創建文本塊的數組,但我不知道如何創建一個「列表」的事件去配合它。這是我迄今爲止的代碼。Silverlight/C#事件數組

List<TextBlock> myList = new List<TextBlock>(); 

int octr = 1; 

    public void createlabels() 
    { 

     TextBlock tb = new TextBlock(); 

     tb.Width = 200; 
     tb.Height = 60; 

     tb.Text = "label"; 

     Canvas.SetLeft(tb, octr + 100); 
     Canvas.SetTop(tb, octr + 100); 

     myList.Add(tb); 

     myList[octr].MouseLeftButtonDown += new MouseButtonEventHandler(mylist_mouseleftbuttondown); 

     octr++; 
    } 

    void mylist_mouseleftbuttondown(object sender, MouseButtonEventArgs e) 
    { 
     TextBlock tb = (TextBlock)sender; 

     tb.Text = "New label"; 

    } 
+2

不應該用0而不是1來初始化嗎? – 2009-10-11 04:50:21

+0

你是什麼意思的事件「名單」,這是什麼,爲什麼會想要它?除了你的索引器被關閉1之外,你還可以用它來將每個新盒子的位置向前和向後放置一個像素,這是你的真正意圖嗎?最重要的是,你實際上並沒有將文本框添加到畫布上,這是故意的嗎? – AnthonyWJones 2009-10-11 07:45:38

+0

我錯過了注意!好的觀察。 – 2009-10-11 07:59:39

回答

2

是否事件被解僱?

TextBlock tb = new TextBlock(); 
     tb.Width = 200; 
     tb.Height = 60; 

     tb.Text = "label"; 

     Canvas.SetLeft(tb, octr + 100); 
     Canvas.SetTop(tb, octr + 100); 

     tb.MouseLeftButtonDown += new MouseButtonEventHandler(mylist_mouseleftbuttondown); 

     myList.Add(tb); 

試試這個,我相信這個必須工作。

+0

我看不出爲什麼他的原始代碼不起作用,但你的方式我會這樣做。 – 2009-10-11 04:37:06

+0

我也不知道他爲什麼不工作,可能是包含對象的列表需要更多級別的拳擊嗎? – 2009-10-11 04:50:52

+0

@Anirudh:你在問題的評論中指出了原始代碼有什麼問題。索引器關閉1. – AnthonyWJones 2009-10-11 07:42:42