前言
近日有个需求,单击加0.1(减0.1),双击加1,(减1)
实现
1、xaml部分
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<DockPanel Grid.Column="0" HorizontalAlignment="Center">
<hc:NumericUpDown x:Name="numer" Height="300" FontSize="50" DecimalPlaces="1" />
</DockPanel>
<StackPanel Grid.Column="1" Margin="20" HorizontalAlignment="Center" Orientation="Vertical">
<Button x:Name="plus_btn" Style="{StaticResource GlassButton}" Width="150" Height="150" Background="#1afa29" Margin="2">
<Image Width="50" Height="50" Source="/img/plus.png"/>
</Button>
<Button x:Name="minus_btn" Style="{StaticResource GlassButton}" Width="150" Height="150" Background="#d81e06" Margin="2">
<Image Width="50" Height="50" Source="/img/minus.png"/>
</Button>
</StackPanel>
</Grid>
2、cs代码
按键事件绑定
plus_btn.AddHandler(Button.MouseLeftButtonDownEvent,
new MouseButtonEventHandler(Grid_MouseLeftButtonDown),true);
minus_btn.AddHandler(Button.PreviewMouseLeftButtonDownEvent,
new MouseButtonEventHandler(Grid_MouseLeftButtonDown),true);
事件
int i = 0;
bool 有双击 = false;
private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) //MouseLeftButtonDown事件
{
i += 1;
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = new TimeSpan(0, 0, 0, 0, 200);
timer.Tick += (s, e1) => { timer.IsEnabled = false; i = 0; 单击(((Button)sender).Name); 有双击 = false; };
timer.IsEnabled = true;
if (i % 2 == 0)
{
timer.IsEnabled = false;
i = 0;
有双击 = true;
//判断点击的是哪个按键
if (((Button)sender).Name.Equals("plus_btn"))
{
numer.Value ++;
}
else {
numer.Value--;
}
//双击时执行的代码
//MessageBox.Show("DoubleClick!");
}
}
private void 单击(string name)
{
if (!有双击)
{
double d = numer.Value;
//单击时执行的代码
if (name.Equals("plus_btn"))
{
numer.Value = d + 0.1;
}
else
{
numer.Value = d - 0.1;
}
}
}
结语
如果您发现文章中有哪些问题,请联系我并指导我改正,或者您有更好的写法,麻烦您指点一二,本人万分感谢,