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

}




复选框在运行时被选中,但相关功能不起作用。
提前致谢

4

1 回答 1

2

尝试;

  • 使事件处理程序公开且非静态,
  • 确保没有人吃掉这些事件。

那这个呢:

chk[i].AddHandler(PointerPressedEvent, 
    new PointerEventHandler(SomeButton_PointerPressed), true);
于 2013-05-15T20:36:11.657 回答