一、造一个窗体,在窗体里面先造一个StackPanel,然后再StackPanel里面放好按钮和文本框,注意给所有的控件和容器起名字
<Grid> <StackPanel Name="Sp1" HorizontalAlignment="Left" Height="350" Margin="0" VerticalAlignment="Top" Width="525"> <Button Name="btn1" Content="exeCommand" Height="41"/> <TextBox Name="TextBox1" Height="284" TextWrapping="Wrap" Text=""/> </StackPanel> </Grid>
二、开始写命令 执行清空
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); mingling(); } //上来需要声明并定义命令 RoutedCommand Command = new RoutedCommand("清空",typeof(MainWindow)); //里面的两个参数第一个是名字,第二个是执行命令的类型 //开始写命令函数 public void mingling() { //创建按钮的命令 btn1.Command = Command; //定义快捷键 Command.InputGestures.Add((new KeyGesture(Key.C,ModifierKeys.Alt))); //快捷键是Alt+C //指定按钮的命令目标 btn1.CommandTarget = TextBox1; //创建命令关联 CommandBinding cb = new CommandBinding() //CommandBinding:用于将命令和命令的安排逻辑链接起来,譬如同样的"粘贴",但粘贴文本和粘贴图片的解决逻辑是不一样的, { Command = Command, }; cb.CanExecute += cb_CanExecute; //CanExecute:当与该 CommandBinding 关联的命令启动检查以确定是否可以在命令目标上执行此命令时发生。 cb.Executed+=cb_Executed; Sp1.CommandBindings.Add(cb); } private void cb_Executed(object sender, ExecutedRoutedEventArgs e) { TextBox1.Clear(); //文本框清空 e.Handled = true;//Handled:获取或设置一个值,该值指示是否处理过 KeyPress 事件。如果执行过,则为ture,否则为false } private void cb_CanExecute(object sender, CanExecuteRoutedEventArgs e) { if (string.IsNullOrWhiteSpace(TextBox1.Text)) { e.CanExecute = false; } else { e.CanExecute = true; } e.Handled = true; } }
三、点击按钮
点击按钮前:
点击按钮后:
时间: 2024-10-30 00:35:28