2013-05-15 28 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

非常感谢,这也可以! –