2013-05-15 61 views
0

我想開發一個Windows 8 Metro應用程序我需要創建任意數量的單選按鈕,但Checked事件處理程序不會啓動。

我在一些文章中看到我必須啓用AutoPostBack。

請讓我知道它是哪個命名空間?此外,我發現它是在System.Web.UI.Webcontrols,但我無法包括名字空間..

我使用的Visual Studio 2012最終是否有幫助關於動態創建的單選按鈕在c#

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"; 
    } 
+2

哪裏是你的代碼,你試過嗎? –

+1

你顯然沒有搜索之前詢問...谷歌搜索「autopostback」在第一個結果中提供了很好的答案... –

+0

RadioButton確實在System.Web.UI.WebControls.RadioButton中,一旦你創建了一個實例鍵入服務器端,可以將其AutoPostBack屬性設置爲true –

回答

2

AutoPostBack不一個名稱空間,它的屬性爲CheckBox,因爲RadioButton繼承自CheckBox

您還必須確保在每次回發時都重新創建動態控件,其ID與以前相同,並且最遲在Page_Load之間。在這個類

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

How to: Add Controls to an ASP.NET Web Page Programmatically.

編程註冊CheckedChanged事件

private void RadioButton_CheckedChanged(Object sender, EventArgs e) 
{ 
    // get the reference to the RadioButton that caused the CheckedChanged-event 
    RadioButton btn = (RadioButton) sender; 
} 
+0

我已經做到了。請參閱我的編輯。對不起,我沒有先添加我的代碼 – user1875119

+0

@ user1875119:對不起,我忘了在第一個版本中添加'AutoPostback'代碼,編輯了我的答案。您需要在每個回發中重新創建動態控件,否則事件不會被觸發。 –

+0

btn.AutoPostBack = true;這是我得到的錯誤,AutoPostBank沒有在'Windows.UI.Xaml.Controls.RadioButton' – user1875119

0

首先,你需要更好地瞭解什麼UI技術,您正在使用的。

.NET有很多的UI框架:

  • 的WinForms
  • WPF
  • 的Silverlight
  • ASP.NET web表單
  • ASP.NET MVC
  • 的Windows Phone,
  • 的Windows存儲應用。

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

回傳是ASP.NET webforms世界的一部分,不是你正在尋找的

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

工作實例

看起來你的問題是,您要添加單選按鈕的數組到網格,而不是單選按鈕本身。它有點難以分辨,因爲你沒有包含你的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(); 
    }