簡體   English   中英

關於c#中動態創建的單選按鈕

[英]About dynamically created radio button in c#

我正在嘗試開發一個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";
    }

AutoPostBack不在命名空間中,它是CheckBox的屬性,因為RadioButton繼承自CheckBox

您還必須確保在每次回發時重新創建動態控件,並使用與之前相同的ID並最遲在Page_Load中重新創建動態控件。

如何:以編程方式將控件添加到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;
}

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

.NET有許多UI框架:

  • 的WinForms
  • WPF
  • Silverlight的
  • ASP.NET網絡表單
  • ASP.NET MVC
  • Windows Phone,
  • Windows應用商店應用。

這些UI框架中的大多數都具有RadioButton控件。 它們是不同的類,具有不同的屬性和行為。

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

確保在尋求幫助時使用正確的框架。 (在MSDN上,頁面頂部通常有一個下拉列表。)

工作實例

看起來你的問題是你要向網格添加一個radiobuttons數組,而不是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();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM