在Winform窗体中,添加一个按钮然后双击按钮就可以在.cs代码自动生成有关事件的代码,这就是一个简单的事件模型,但是如果对于大型的设计界面,数量过多的控件通过每次都生成相关的时间代码,将是一个好大的时间与控件的浪费,如何解决这个问题,可以用路由事件解决(通俗笼统的解释,详解自行查阅),路由事件包括(隧道路由,冒泡路由)
1.下面我们从实例开始;
//将路由事件放入 MainWindow()构造函数中订阅
public void InitialTxtChange()
{
this.Power_Value.AddHandler(TextBox.KeyDownEvent, new RoutedEventHandler(Txt_Tension));
this.Grid_RadioButton.AddHandler(RadioButton.ClickEvent, new RoutedEventHandler(Rtn_Tension));
}
/// <summary>
/// 点击选择正面或反面
/// </summary>
private void Rtn_Tension(object sender, RoutedEventArgs e)
{
UIElement s = (UIElement)e.OriginalSource; //可视树起始元素
RadioButton Rad = new RadioButton();
Rad = s as RadioButton; //获取选中的控件
//RadioButton Rad =new RadioButton();
//Rad= RadioButton as Sender
switch (Rad.Name) //根据选中的控件名称进行操作
{
case "Rtn_Front": MessageBox.Show("正面"); break;
case "Rtn_Back" : MessageBox.Show("背面"; break;
}
}
2.XAML中代码部分
<Grid Grid.Row="3" Grid.Column="1" Name="Grid_RadioButton">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="5*"/>
<ColumnDefinition Width="1.66*"/>
<ColumnDefinition Width="1.66*"/>
<ColumnDefinition Width="1.66*"/>
</Grid.ColumnDefinitions>
<!--<Border Grid.Column="1" Grid.ColumnSpan="2" BorderBrush="LightBlue" BorderThickness="1"></Border>-->
<RadioButton Name="Rtn_Front" Grid.Column="1" IsChecked="True" Content="正面" Style="{StaticResource FontFamilyRadioButton}"></RadioButton>
<RadioButton Name="Rtn_Back" Grid.Column="2" Content="背面" Style="{StaticResource FontFamilyRadioButton}" ></RadioButton>
<TextBox HorizontalAlignment="Left" Width="250" Name="Txt_PCBNumber" Margin="1" MaxHeight="20" ></TextBox>
</Grid>
3.运行结果