Articles in this section
Category / Section

How to change the dropdown height in WinForms GridGroupingControl?

3 mins read

Customize the dropdown height

You can customize the dropdown height of the ComboBox cell using the TableControlCurrentCellShowingDropDown event. The size can be set for the dropdown based on the items count and its default height.

C#

this.gridGroupingControl1.QueryCellStyleInfo += new GridTableCellStyleInfoEventHandler(gridGroupingControl1_QueryCellStyleInfo);
this.gridGroupingControl1.TableControlCurrentCellShowingDropDown += new GridTableControlCurrentCellShowingDropDownEventHandler(gridGroupingControl1_TableControlCurrentCellShowingDropDown);
void gridGroupingControl1_TableControlCurrentCellShowingDropDown(object sender, GridTableControlCurrentCellShowingDropDownEventArgs e)
{
   if(this.gridGroupingControl1.TableModel.CurrentCellRenderer != null && this.gridGroupingControl1.TableModel.CurrentCellRenderer is GridDropDownGridListControlCellRenderer)
   {
      int defaultHeight=18;
      GridDropDownGridListControlCellRenderer listRenderer = (GridDropDownGridListControlCellRenderer)this.gridGroupingControl1.TableModel.CurrentCellRenderer;
      if(isitem1)
      {
         e.Inner.Size = new Size(100, (items1.Count * defaultHeight));//Set the height based on the items.
      }
      else if(isitem2)
      {
         e.Inner.Size = new Size(100, (items2.Count * defaultHeight));//Set the height based on the items.
      }
      listRenderer.ListControlPart.ShowColumnHeader = false;
   }
}
void gridGroupingControl1_QueryCellStyleInfo(object sender, GridTableCellStyleInfoEventArgs e)
{
   double result = 0;
   if(e.TableCellIdentity.Column != null)
   {
      if(e.TableCellIdentity.Column.GetName().Equals("PaymentType") && e.TableCellIdentity.DisplayElement.GetRecord() != null)
      {
         If (double.TryParse(e.TableCellIdentity.DisplayElement.GetRecord().GetValue("Amount").ToString(), out result))
         {
            //Bind the DataSource for drop down combo box cell based on the ‘Amount’ column.
            if(result > 0)
            {
               e.Style.DataSource = items1;
               isitem2 = false;
               isitem1 = true;
            }
            else
            {
               e.Style.DataSource = items2;
               isitem2 = true;
               isitem1 = false;
            }
         }
         e.Style.CellType = GridCellTypeName.GridListControl;//To set Combobox Celltype.
         e.Style.ShowButtons = GridShowButtons.Show;
         e.Style.DropDownStyle = GridDropDownStyle.Editable;//This allows you to edit the combo box contents.
         e.Style.AutoCompleteInEditMode = GridComboSelectionOptions.AutoSuggest;//Auto complete support for combobox in edit mode.
      }
   }
}

 VB

AddHandler gridGroupingControl1.TableControlCurrentCellShowingDropDown, AddressOf gridGroupingControl1_TableControlCurrentCellShowingDropDown
Private Sub gridGroupingControl1_TableControlCurrentCellShowingDropDown(ByVal sender As Object, ByVal e As GridTableControlCurrentCellShowingDropDownEventArgs)
   If Me.gridGroupingControl1.TableModel.CurrentCellRenderer IsNot Nothing AndAlso TypeOf Me.gridGroupingControl1.TableModel.CurrentCellRenderer Is GridDropDownGridListControlCellRenderer Then
      Dim defaultHeight As Integer=18
      Dim listRenderer As GridDropDownGridListControlCellRenderer = CType(Me.gridGroupingControl1.TableModel.CurrentCellRenderer, GridDropDownGridListControlCellRenderer)
      If isitem1 Then
         e.Inner.Size = New Size(100, (items1.Count * defaultHeight)) ‘Set the height based on the items.
      ElseIf isitem2 Then
         e.Inner.Size = New Size(100, (items2.Count * defaultHeight)) ‘Set the height based on the items.
      End If
      listRenderer.ListControlPart.ShowColumnHeader = False
   End If
End Sub
Private Sub gridGroupingControl1_QueryCellStyleInfo(ByVal sender As Object, ByVal e As GridTableCellStyleInfoEventArgs)
   Dim result As Double = 0
   If e.TableCellIdentity.Column IsNot Nothing Then
      If e.TableCellIdentity.Column.GetName().Equals("PaymentType") AndAlso e.TableCellIdentity.DisplayElement.GetRecord() IsNot Nothing Then
         If Double.TryParse(e.TableCellIdentity.DisplayElement.GetRecord().GetValue("Amount").ToString(), result) Then
            ‘Bind the DataSource for drop down combo box cell based on the ‘Amount’ column.
            If result > 0 Then
               e.Style.DataSource = items1
               isitem2 = False
               isitem1 = True
            Else
               e.Style.DataSource = items2
               isitem2 = True
               isitem1 = False
            End If
         End If
         e.Style.CellType = GridCellTypeName.GridListControl 'To set Combobox Celltype.
         e.Style.ShowButtons = GridShowButtons.Show
         e.Style.DropDownStyle = GridDropDownStyle.Editable 'This allows the user to edit the combo box contents.
         e.Style.AutoCompleteInEditMode = GridComboSelectionOptions.AutoSuggest 'Auto complete support for combobox in edit mode.
      End If
   End If
End Sub

The following screenshot displays a ComboBox cell with customized dropdown height.

Change the drop down height in WinForms

Figure 1: Output

Samples:

C#: DynamicComboBox

VB: DynamicComboBox

Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments (0)
Please sign in to leave a comment
Access denied
Access denied