/// <summary>
        /// Handles the Click event of the btnAdd control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        private void btnAdd_Click(object sender, EventArgs e)
        {
            if (ValidateMandatoryField())
            {
                // Create measurement item

                PlayerMeasurementListItem item = new PlayerMeasurementListItem();
                item.Value = double.Parse(txtValue.Text);
                item.Unit = GetUnit(cbxUnit.SelectedItem.ToString());
                item.Remark = rtxtRemark.Text;

                // Get category selection

                Pair<FeatureCategory, FeatureSubCategory> categories = GetCategorySelection();

                if (categories != null)
                {
                    item.Category = categories.Left.NiceName;
                    item.SubCategory = categories.Right.NiceName;
                }

                item.Timestamp = DateTime.Now;

                // Add item to list to be added

                addItems.Add(item);

                // Add new list view item

                ListViewItem listItem = lvwMeasurements.Items.Add(new ListViewItem(item.ToArray()));
                listItem.Tag = item;
                listItem.Name = item.Id.ToString();

                // Auto adjust column sizes

                Gui.AutoAdjustListViewColumns(lvwMeasurements);

                // Release edit mode

                UpdateControls(EditMode.None);
            }
            else
            {
                Gui.ShowInformation("Ungültige Eingabe", "Pflichtfeld enthält ungültigen Eingabewert.");
            }
        }
 /// <summary>
 /// Inserts the existing values for specified <paramref name="item"/>.
 /// </summary>
 /// <param name="item">The <see cref="PlayerMeasurementListItem"/> to insert values for.</param>
 private void InsertExistingValues(PlayerMeasurementListItem item)
 {
     txtValue.Text = item.Value.ToString();
     cbxUnit.SelectedItem = GetUnit(item);
     cbxCategory.SelectedItem = item.Category;
     cbxSubCategory.SelectedItem = item.SubCategory;
     rtxtRemark.Text = item.Remark;
 }
        /// <summary>
        /// Handles the Load event of the EditMeasurementsForm control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        private void EditMeasurementsForm_Load(object sender, EventArgs e)
        {
            List<Measurement> measurements = database.LoadMeasurements(player);

            // Fill list view with existing measurements

            foreach (Measurement measurement in measurements)
            {
                PlayerMeasurementListItem measurementItem = new PlayerMeasurementListItem(measurement);
                ListViewItem listItem = lvwMeasurements.Items.Add(new ListViewItem(measurementItem.ToArray()));
                listItem.Tag = measurementItem;
                listItem.Name = measurementItem.Id.ToString();
            }

            // Auto adjust size of list view columns

            Gui.AutoAdjustListViewColumns(lvwMeasurements);
        }
 /// <summary>
 /// Gets the unit for specified <paramref name="item"/>.
 /// </summary>
 /// <param name="item">The <see cref="PlayerMeasurementListItem"/> to retrieve the unit for.</param>
 /// <returns>The unit as <see cref="string"/>.</returns>
 private string GetUnit(PlayerMeasurementListItem item)
 {
     return Measurement.GetUnitAsString(item.Unit);
 }
        /// <summary>
        /// Creates a <see cref="Measurement"/> from specified <paramref name="item"/> to be updated.
        /// </summary>
        /// <param name="item">The <see cref="Measurement"/> item to be updated.</param>
        /// <returns>The <see cref="Measurement"/> to be updated.</returns>
        private Measurement CreateUpdateMeasurement(PlayerMeasurementListItem item)
        {
            FeatureCategory category = featureCategories.Find(cat => cat.NiceName == item.Category);
            FeatureSubCategory subCategory = category.SubCategories.Find(cat => cat.NiceName == item.SubCategory);

            MeasurementDao dao = item.Measurement.Dao;
            dao.Value = item.Value;
            dao.Remark = item.Remark;
            dao.Unit = item.Unit;
            dao.Timestamp = item.Timestamp;

            dao.SubCategoryDao = subCategory.Dao;
            dao.PlayerReferenceDao = player.Reference.Dao;

            return (Measurement) dao.CreateDomainObject();
        }