我正在尝试开发 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";
}
答案 0 :(得分:2)
AutoPostBack
不在命名空间中,它是CheckBox
的属性,因为RadioButton
继承自CheckBox
。
您还必须确保在每个回发上重新创建动态控件,并使用与之前相同的ID,最迟在Page_Load
中重新创建。
How to: Add Controls to an ASP.NET Web Page Programmatically.
以编程方式注册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;
}
答案 1 :(得分:0)
首先,您需要更好地了解您正在使用的UI技术。
.NET有许多UI框架:
这些UI框架中的大多数都具有RadioButton控件。它们是不同的类,具有不同的属性和行为。
回发是ASP.NET网络表单世界的一部分,不是您正在寻找的!
确保在寻求帮助时使用正确的框架。 (在MSDN上,页面顶部通常有一个下拉列表。)
工作示例
看起来您的问题是您正在向Grid添加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();
}