Der UpDown-Button muss zur Designzeit auf dem Listview vorhanden sein!
// Eigenschaften des UpDownButtons setzen
UDBtn.BorderStyle = BorderStyle.None;
UDBtn.Visible = false;
UDBtn.ValueChanged += new System.EventHandler(UDBtn_ValueChanged);
// Ereignis ItemSelectionChanged des ListViews behandeln
private void ListView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
{
if (e.IsSelected)
{
this.SetBtn(e.Item);
UDBtn.Visible = true;
}
else
{
UDBtn.Visible = false;
e.Item.SubItems[ListView1.Columns.Count - 1].Text = UDBtn.Value.ToString();
}
}
// Funktion setzt den Button in die akt. Zeile und jeweils letzte Spalte (ListView1.Columns.Count - 1) des ListViews
// Werte für X- und Y-Offset müssen ggf. Angepasst werden
private void SetBtn(ListViewItem lvi)
{
int iLeft = 0;
if (lvi != null)
{
if (lvi.Selected)
{
// adjust position values here, to fit correctly
UDBtn.Top = 38 + lvi.Position.Y - 20;
for (int iCol = 0; iCol < ListView1.Columns.Count; iCol++)
{
iLeft += ListView1.Columns[iCol].Width;
}
UDBtn.Left = iLeft - 39;
UDBtn.Width = ListView1.Columns[ListView1.Columns.Count - 1].Width - 1;
UDBtn.Value = decimal.Parse(lvi.SubItems[ListView1.Columns.Count - 1].Text);
}
}
else
{
UDBtn.Visible = false;
}
}
// Ereignis ValueChanged des Buttons
private void UDBtn_ValueChanged(object sender, System.EventArgs e)
{
ListViewItem lvi = (ListView1.SelectedItems.Count -> 0) ? lvi = ListView1.SelectedItems[0] : null;
if (lvi != null)
{
lvi.SubItems[ListView1.Columns.Count - 1].Text = UDBtn.Value.ToString();
}
}