0

我正在尝试开发一个Windows 8 Metro 应用程序,我需要在其中创建任意数量的单选按钮,但 Checked 事件处理程序没有启动。

我在一些帖子中读到我必须启用 AutoPostBack。

请让我知道它在哪个命名空间中?我还发现它在 System.Web.UI.Webcontrols 中,但我无法包含该名称空间。

如果有帮助,我正在使用 Visual Studio 2012 Ultimate

RadioButton rad=new RadioButton();
            rad.HorizontalAlignment = HorizontalAlignment.Left;
            rad.VerticalAlignment = VerticalAlignment.Top;
            rad.Margin = new Thickness(1100, x, 0, 0);
            rad.Width = 35;
            rad.Height = 30;
            rad.GroupName = "group1";
            rad.IsEnabled = true;
            rad.Checked += new RoutedEventHandler(radbtn);
            gridit.Children.Add(rad[i]);

void radbtn(object obj, RoutedEventArgs e)
    {
        edit_del_tb.Text = "Testing";
    }
4

2 回答 2

2

AutoPostBack不在命名空间中,它是 的属性,CheckBox因为 aRadioButton继承自CheckBox.

您还必须确保在每次回发时重新创建动态控件,并且Page_Load最晚使用与之前相同的 ID。

如何:以编程方式将控件添加到 ASP.NET 网页。

CheckedChanged以编程方式注册事件:

RadioButton btn = new RadioButton();
btn.AutoPostBack = true;
btn.CheckedChanged += this.RadioButton_CheckedChanged;
Panel1.Controls.Add(btn);

在这堂课中:

private void RadioButton_CheckedChanged(Object sender, EventArgs e)
{
    // get the reference to the RadioButton that caused the CheckedChanged-event
    RadioButton btn = (RadioButton) sender;
}
于 2013-05-15T12:38:35.160 回答
0

首先,您需要更好地了解您正在使用的 UI 技术。

.NET 有许多 UI 框架:

  • 窗体
  • WPF
  • 银光
  • ASP.NET 网络表单
  • ASP.NET MVC
  • 视窗电话,
  • Windows 应用商店应用程序。

大多数这些 UI 框架都有 RadioButton 控件。它们是不同的类,具有不同的属性和行为。

Postback 是 ASP.NET webforms 世界的一部分,不是您要找的

确保在寻求帮助时使用正确的框架。(在 MSDN 上,页面顶部通常有一个下拉菜单。)

工作示例

看起来您的问题是您正在向 Grid 添加一组单选按钮,而不是 RadioButton 本身。有点难以分辨,因为您没有包含 XAML 或所有 C# 代码。

这是一些有效的代码。

XAML

 <Grid 
        Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <Grid.RowDefinitions>
      <RowDefinition Height='30' />
      <RowDefinition Height='1*' />
    </Grid.RowDefinitions>
    <TextBlock x:Name='edit_del_tb' />
    <Grid Grid.Row='1'
          x:Name='gridit'></Grid>
    </Grid>

C# 代码

   public MainPage() {
      this.InitializeComponent();
      for (int i = 0; i < 4; i++)
      {
        RadioButton rad = new RadioButton();
        rad.HorizontalAlignment = HorizontalAlignment.Left;
        rad.VerticalAlignment = VerticalAlignment.Top;
        rad.Margin = new Thickness(100, i * 40, 0, 0);
        rad.Width = 350;
        rad.Height = 30;
        rad.GroupName = "group1";
        rad.IsEnabled = true;
        rad.Content = "Button " + i;
        rad.Checked += new RoutedEventHandler(radbtn);
        gridit.Children.Add(rad);
      }

    }
    void radbtn(object obj, RoutedEventArgs e) {
      edit_del_tb.Text = (obj as RadioButton).Content.ToString();
    }
于 2013-05-15T22:45:10.330 回答