WPF桌球计费实例
前端代码
<StackPanel>
<WrapPanel>
<Button x:Name="btnStart" Content="开台" Height="40" Width="80" Click="btnStart_Click"></Button>
<Button x:Name="btnStop" Content="结账" Height="40" Width="80" Click="btnStop_Click"></Button>
</WrapPanel>
<DataGrid Name="lbStage" IsReadOnly="False" CanUserAddRows="False" CanUserDeleteRows="False" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="桌台编号" IsReadOnly="True" Width="100" Binding="{Binding Path=id, Mode=TwoWay}"/>
<DataGridTextColumn Header="计费方案" IsReadOnly="True" Width="100" Binding="{Binding Path=name, Mode=TwoWay}"/>
<DataGridTextColumn Header="开始时间" IsReadOnly="True" Width="180" Binding="{Binding Path=starttime, Mode=TwoWay}"/>
<DataGridTextColumn Header="累计时间" IsReadOnly="True" Binding="{Binding Path=time, Mode=TwoWay}"/>
</DataGrid.Columns>
</DataGrid>
</StackPanel>
后台代码
public partial class UserWindow : Window
{
System.Windows.Threading.DispatcherTimer timer = new System.Windows.Threading.DispatcherTimer();
System.Collections.ObjectModel.ObservableCollection<Stages> listStages = new System.Collections.ObjectModel.ObservableCollection<Stages>(){
new Stages(){ id=1, name="花式台球"},
new Stages(){ id=2, name="花式台球"},
new Stages(){ id=3, name="美式台球"},
new Stages(){ id=4, name="斯诺克"},
new Stages(){ id=5, name="麻将"}
};
public UserWindow()
{
InitializeComponent();
this.lbStage.ItemsSource = listStages;
timer.Interval = new TimeSpan(0, 0, 1);
timer.Tick += new EventHandler(TimerTick);
timer.Start();
}
private void btnStart_Click(object sender, RoutedEventArgs e)
{
if (lbStage.SelectedItem != null)
{
Stages stage = lbStage.SelectedItem as Stages;
if (stage.status == 0)
{
stage.status = 1;
stage.starttime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
new System.Threading.Thread(WorkerProc) { IsBackground = true }.Start();
}
else
{
MessageBox.Show("您指定的台桌不是空台状态");
}
}
}
private void WorkerProc() { }
private void btnStop_Click(object sender, RoutedEventArgs e)
{
if (lbStage.SelectedItem != null)
{
Stages stage = lbStage.SelectedItem as Stages;
if (stage.status == 0)
{
MessageBox.Show("您指定的台桌是空台状态");
}
else
{
MessageBoxResult result = MessageBox.Show("确定结账台桌吗?", "温馨提示", MessageBoxButton.YesNo);
if (result.ToString() == "Yes")
{
stage.starttime = string.Empty;
stage.time = string.Empty;
stage.status = 0;
stage.minute = 0;
}
}
}
}
private void TimerTick(object sender, EventArgs e)
{
foreach (Stages stage in listStages)
{
if (stage.status == 1)
{
stage.minute += 1;
TimeSpan ts = new TimeSpan(0, 0, stage.minute);
if (ts.Days > 0)
stage.time = string.Format("{0}天{1}小时{2}分钟{3}秒", ts.Days, ts.Hours, ts.Minutes, ts.Seconds);
else if (ts.Hours > 0)
stage.time = string.Format("{0}小时{1}分钟{2}秒", ts.Hours, ts.Minutes, ts.Seconds);
else
stage.time = string.Format("{0}分钟{1}秒", ts.Minutes, ts.Seconds);
}
}
}
}
public class Stages : System.ComponentModel.INotifyPropertyChanged
{
public int id { set; get; }
public int _status;
public int status
{
get { return _status; }
set { _status = value; OnPropertyChanged("status"); }
}
public int minute { set; get; }
public string name { set; get; }
public string _time;
public string time
{
get { return _time; }
set { _time = value; OnPropertyChanged("time"); }
}
public string _starttime;
public string starttime
{
get { return _starttime; }
set { _starttime = value; OnPropertyChanged("starttime"); }
}
protected internal virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
}

浙公网安备 33010602011771号