Benutzer mit den meisten Antworten
DataGridView und ComboBox

Frage
-
Hallo Forum,
ich habe ein DataGridView in dem ich per Code eine ComboBox erzeuge :
DataGridViewComboBoxColumn Umsetzung = new DataGridViewComboBoxColumn(); Umsetzung.DataPropertyName = "Umsetzung"; Umsetzung.HeaderText = "Umsetzung mit"; Umsetzung.Width = 160; Umsetzung.DataSource = UmwandlTabKopf; Umsetzung.ValueMember = "UmID"; Umsetzung.DisplayMember = "UmBezeich"; UebersetzteWerteDataGridView.Columns.Add(Umsetzung);
Wenn ich nun einen Eintrag auswähle, möchte ich den selektierten Wert "UmID" in einem label anzeigen. Leider komme ich da nicht weiter.
Ausserdem sollen alle selektierten Werte in den Zeilen immer angezeigt werden auch wenn die Sortierung in einer anderen Spalte geändert wird. Wie geht das ?
Kann mir da jemand helfen ?
Gruß Roland
Antworten
-
Hallo Roland,
hier eine Möglichkeit:
using System; using System.Data; using System.Windows.Forms; namespace WinDgvDemo2 { public partial class Form1 : Form { DataGridView UebersetzteWerteDataGridView = new DataGridView(); DataTable UmwandlTabKopf = new DataTable(); Label lblInfo = new Label(); public Form1() { InitializeComponent(); Controls.Add(UebersetzteWerteDataGridView); Controls.Add(lblInfo); lblInfo.Top = UebersetzteWerteDataGridView.Height; UmwandlTabKopf.Columns.Add("Umsetzung", typeof(int)); UmwandlTabKopf.Columns.Add("UmID", typeof(int)); UmwandlTabKopf.Columns.Add("UmBezeich", typeof(string)); UmwandlTabKopf.Rows.Add(142, 42, "Bez 42"); UmwandlTabKopf.Rows.Add(143, 43, "Bez 43"); UmwandlTabKopf.Rows.Add(144, 44, "Bez 44"); UmwandlTabKopf.Rows.Add(145, 45, "Bez 45"); UmwandlTabKopf.AcceptChanges(); DataGridViewComboBoxColumn Umsetzung = new DataGridViewComboBoxColumn(); Umsetzung.DataPropertyName = "Umsetzung"; Umsetzung.HeaderText = "Umsetzung mit"; Umsetzung.Width = 160; Umsetzung.DataSource = UmwandlTabKopf; Umsetzung.ValueMember = "UmID"; Umsetzung.DisplayMember = "UmBezeich"; UebersetzteWerteDataGridView.Columns.Add(Umsetzung); UebersetzteWerteDataGridView.EditingControlShowing += UebersetzteWerteDataGridView_EditingControlShowing; UebersetzteWerteDataGridView.EditMode = DataGridViewEditMode.EditOnEnter; } void UebersetzteWerteDataGridView_EditingControlShowing( object sender, DataGridViewEditingControlShowingEventArgs e) { DataGridViewComboBoxEditingControl ctl = e.Control as DataGridViewComboBoxEditingControl; if (ctl == null) return; ctl.SelectedValueChanged -= ctl_SelectedValueChanged; ctl.SelectedValueChanged += ctl_SelectedValueChanged; } void ctl_SelectedValueChanged(object sender, EventArgs e) { DataGridViewComboBoxEditingControl ctl = sender as DataGridViewComboBoxEditingControl; if (ctl == null) return; lblInfo.Text = ctl.EditingControlFormattedValue.ToString(); } } }
ciao Frank- Als Antwort vorgeschlagen Robert BreitenhoferModerator Donnerstag, 1. September 2011 11:32
- Als Antwort markiert Robert BreitenhoferModerator Montag, 5. September 2011 10:15
Alle Antworten
-
Hallo Roland,
hier eine Möglichkeit:
using System; using System.Data; using System.Windows.Forms; namespace WinDgvDemo2 { public partial class Form1 : Form { DataGridView UebersetzteWerteDataGridView = new DataGridView(); DataTable UmwandlTabKopf = new DataTable(); Label lblInfo = new Label(); public Form1() { InitializeComponent(); Controls.Add(UebersetzteWerteDataGridView); Controls.Add(lblInfo); lblInfo.Top = UebersetzteWerteDataGridView.Height; UmwandlTabKopf.Columns.Add("Umsetzung", typeof(int)); UmwandlTabKopf.Columns.Add("UmID", typeof(int)); UmwandlTabKopf.Columns.Add("UmBezeich", typeof(string)); UmwandlTabKopf.Rows.Add(142, 42, "Bez 42"); UmwandlTabKopf.Rows.Add(143, 43, "Bez 43"); UmwandlTabKopf.Rows.Add(144, 44, "Bez 44"); UmwandlTabKopf.Rows.Add(145, 45, "Bez 45"); UmwandlTabKopf.AcceptChanges(); DataGridViewComboBoxColumn Umsetzung = new DataGridViewComboBoxColumn(); Umsetzung.DataPropertyName = "Umsetzung"; Umsetzung.HeaderText = "Umsetzung mit"; Umsetzung.Width = 160; Umsetzung.DataSource = UmwandlTabKopf; Umsetzung.ValueMember = "UmID"; Umsetzung.DisplayMember = "UmBezeich"; UebersetzteWerteDataGridView.Columns.Add(Umsetzung); UebersetzteWerteDataGridView.EditingControlShowing += UebersetzteWerteDataGridView_EditingControlShowing; UebersetzteWerteDataGridView.EditMode = DataGridViewEditMode.EditOnEnter; } void UebersetzteWerteDataGridView_EditingControlShowing( object sender, DataGridViewEditingControlShowingEventArgs e) { DataGridViewComboBoxEditingControl ctl = e.Control as DataGridViewComboBoxEditingControl; if (ctl == null) return; ctl.SelectedValueChanged -= ctl_SelectedValueChanged; ctl.SelectedValueChanged += ctl_SelectedValueChanged; } void ctl_SelectedValueChanged(object sender, EventArgs e) { DataGridViewComboBoxEditingControl ctl = sender as DataGridViewComboBoxEditingControl; if (ctl == null) return; lblInfo.Text = ctl.EditingControlFormattedValue.ToString(); } } }
ciao Frank- Als Antwort vorgeschlagen Robert BreitenhoferModerator Donnerstag, 1. September 2011 11:32
- Als Antwort markiert Robert BreitenhoferModerator Montag, 5. September 2011 10:15