InplaceEditor



  • Ich möchte gerne in dataGrid z.b. eine Combobox einbetten, so dass, wenn ich eine zelle anklicke, wird diese box angezeigt, aus der ich was auswählen kann.

    was jemand, ob es geht? und wenn ja, wie?



  • Hi Ja es geht :

    // Combobox erstellen
    	ComboBox oMyComboBox = new ComboBox();
    
    	private void Form1_Load(object sender, System.EventArgs e)
    	{
    
    		oMyComboBox.Visible = false; 	// wichtig da sonst sichtbar am anfang
    		oMyComboBox.Items.Add("Ich");
    		oMyComboBox.Items.Add("komme");
    		oMyComboBox.Items.Add("in");
    		oMyComboBox.Items.Add("ein");
    		oMyComboBox.Items.Add("DataGrid");
    
    	// und ind Grid einbetten
    		dataGrid1.Controls.Add(oMyComboBox);
    
     	// einen Datensatz erstellen
    		DataSet oMyDataSet = new DataSet();
    		DataTable oMyDataTable = oMyDataSet.Tables.Add("myDataTable1");
    		DataColumn oMyDataColumn = oMyDataTable.Columns.Add("myDataColumn1", typeof(String));
    		DataColumn oMyDataColumn1 = oMyDataTable.Columns.Add("myDataColumn2", typeof(String));
    		DataColumn oMyDataColumn2 = oMyDataTable.Columns.Add("myDataColumn3", typeof(String));					
    	// und einfügen
    		dataGrid1.DataSource = oMyDataSet;
    
    	}
    
    		// Behandlungsroutine für den 'Zellenwechsel'
    
    	private void dataGrid1_CurrentCellChanged(object sender, System.EventArgs e)
    	{
    
    		if(dataGrid1.CurrentCell.ColumnNumber == 1)
    		{
    			oMyComboBox.Left = dataGrid1.GetCurrentCellBounds().Left;
    			oMyComboBox.Top  = dataGrid1.GetCurrentCellBounds().Top;
    			oMyComboBox.Height = dataGrid1.GetCurrentCellBounds().Height;
    			oMyComboBox.Width = dataGrid1.GetCurrentCellBounds().Width;
    			oMyComboBox.Visible = true;
    		} else oMyComboBox.Visible = false;
    	}
    

    Natürlich muss auch noch das select ereignis von der Combobox abgefangen werden und und der wert dann in die Zelle geschrieben werden, da die combobox beim verlassen der Zelle verschwindet - aber dass überlass ich dir jetzt mal 😉

    Hmm könnte man alledings auch mit in die Zellenbhandlung nehmen



  • Sieht sehr interessant aus. 👍 Werde ich gleich ausprobieren. Danke.



  • Funzt, Dank!

    man muss noch zu deinem Code diese zeile einfügen, sonst wird die Combobox von dem Standard Grideditor überdekt.

    oMyComboBox.BringToFront();
    


  • Hi,

    keine ursache

    es sind auch noch einige andere dinge zu berücksichtigen (z.b. Scrollen des grids) hmm ich schreib mal ein kleines Tutor drüber wenn interesse besteht



  • Wäre vielleicht auch für anderen hilfsreich.


Anmelden zum Antworten