/// <summary>
        /// Adds a new item value by copying an existing one.
        /// </summary>
        private void CopyMI_Click(object sender, System.EventArgs e)
        {
            try
            {
                // check for valid selection.
                if (ReadOnly || ValuesLV.SelectedItems.Count != 1)
                {
                    return;
                }

                TsCHdaAnnotationValue value = (TsCHdaAnnotationValue)ValuesLV.SelectedItems[0].Tag;

                // create new item value.
                TsCHdaAnnotationValue copy = new AnnotationValueEditDlg().ShowDialog((TsCHdaAnnotationValue)value.Clone());

                // prompt user to edit item value.
                if (copy == null)
                {
                    return;
                }

                // update display.
                AddListItem(copy, ValuesLV.SelectedIndices[0]);

                // adjust columns
                AdjustColumns();
            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.Message);
            }
        }