2013-05-15 57 views
0

首先,我不得不提到我是c#的新手。
我正在用xaml和c#開發一個windows 8 metro應用程序。
我創建了一個複選框動態數組,併爲它們分配了一個指針按鈕事件。
奇怪的問題是,pointerpressed事件沒有啓動註冊函數。
如果我使用設計工具創建相同的複選框(我正在使用Visual Studio 2012),奇怪的是這個功能確實有效。
因爲我不知道要在運行時創建多少個複選框,所以使用設計工具來處理複選框不是一個選項。

代碼我跑是如下:


事件處理函數沒有爲動態創建的複選框啓動

CheckBox[] chk=new CheckBox[count]; 
int x=20; //Width of each checkbox(to be incremented for every iteration) 
for(int i = 0; i < count ; i++) 
{ 
    chk[i] = new CheckBox(); 
    chk[i].HorizontalAlignment = HorizontalAlignment.Left; 
    chk[i].Margin = new Thickness(1100, x, 0, 0); 
    chk[i].VerticalAlignment = VerticalAlignment.Top; 
    chk[i].Height = 30; 
    chk[i].Width = 35; 
    chk[i].PointerPressed += new PointerEventHandler(chkhandler); 
    gridit.Children.Add(chk[i]); 
    x = x + 35; 
} 
private static void chkhandler(object obj, PointerRoutedEventArgs arg) 
{ 
    textblock1.Text="Testing"; //Sample Textblock 

} 




的複選框在運行期間得到檢查,但相關的功能不起作用。
在此先感謝

+1

你探討一個複選框的各種事件,以確定是否要綁定到正確的項目。你的例子並不能表明你的期望,但是因爲你使用的是複選框,所以我會關閉chk [i] .Click或chk [i] .Checked。特別是在查看Visual Studio 2012和4.5框架時,CheckBox沒有PointerPressed事件。 –

+0

@SASS_Shooter'PointerPressed'可能指的是:http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.uielement.pointerpressed –

+0

謝謝,點擊作品。順便點擊事件和指針之間有任何區別按 –

回答

2

嘗試;

  • 使得事件處理公共&非靜態,
  • 確保沒有人吃了的事件。
這個

什麼:

chk[i].AddHandler(PointerPressedEvent, 
    new PointerEventHandler(SomeButton_PointerPressed), true); 
+0

非常感謝,這也可以! –