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いるため、のプロパティです。RadioButtonCheckBox

また、すべてのポストバックで動的コントロールが以前と同じ ID で再作成さPage_Loadれ、最新であることを確認する必要があります。

方法: コントロールを ASP.NET Web ページにプログラムで追加します。

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 フレームワークがあります。

  • Winフォーム
  • WPF
  • シルバーライト
  • ASP.NET ウェブフォーム
  • ASP.NET MVC
  • ウインドウズの電話、
  • Windows ストア アプリ。

これらの UI フレームワークのほとんどには、RadioButton コントロールがあります。これらは異なるクラスであり、異なるプロパティと動作を持っています。

ポストバックは ASP.NET Web フォームの世界の一部であり、探しているものではありません

正しいフレームワークを使用するためのヘルプを探しているときは、必ず確認してください。(MSDN では通常、ページの上部にドロップダウンがあります。)

実施例

問題は、RadioButton 自体ではなく、RadioButton の配列を Grid に追加していることです。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 に答える