private void raceControl_LapCompleted(object sender, LapCompletedEventArgs e) {
     // add new item to listview
     var item = new ListViewItem();
     item.Text = e.PlayerName;
     item.SubItems.Add(e.Car);
     item.SubItems.Add(e.Track);
     item.SubItems.Add(e.Laps.ToString());
     item.SubItems.Add(GetTimeString(e.LapTime));
     item.SubItems.Add(GetTimeString(e.Splits[0]));
     item.SubItems.Add(GetTimeString(e.Splits[1]));
     item.SubItems.Add(GetTimeString(e.Splits[2]));
     lapsListView.Items.Add(item);
 }
        private void HandlePacket(InSim insim, IS_LAP packet) {
            // player has completed lap, get player from list, and raise lapcompleted event
            var player = players[packet.PLID];

            var e = new LapCompletedEventArgs(
                player.PlayerName,
                currentTrack,
                player.Car,
                packet.LapsDone,
                packet.LTime,
                player.GetSplits());

            OnLapCompleted(e);

            player.ClearSplits(); // do this last
        }
 protected virtual void OnLapCompleted(LapCompletedEventArgs e) {
     var temp = LapCompleted;
     if (temp != null) {
         temp(this, e);
     }
 }