private async void HandleArrowButtonClick(object sender, EventArgs e) { if (!_confirmedTraining) { var dialog = _messageBoxFactory.CreateMessageBox("Do you want to train?", "Character training", EODialogButtons.OkCancel); var result = await dialog.ShowDialogAsync(); if (result == XNADialogResult.OK) { _confirmedTraining = true; } } else { var index = _arrowButtons.Select((btn, ndx) => new { btn, ndx }) .Single(x => x.btn == sender).ndx; var characterStat = CharacterStat.Strength + index; _trainingController.AddStatPoint(characterStat); } }