Click here to Skip to main content
Click here to Skip to main content

Adjust combo box drop down list width to longest string width

By , 7 Jan 2004
 

Sample Image - ComboBoxAutoWidth.jpg

Introduction

This small snippet of code will show you how to automatically adjust the size of the drop down list of a combo box to fit the size of the longest string in its items.

Code

Step 1: Add an event handler for the DropDown event of the combo box. Call it AdjustWidthComboBox_DropDown for the sake of the following code.

Step 2: Add the following event handler code.

private void AdjustWidthComboBox_DropDown(object sender, System.EventArgs e)
{
    ComboBox senderComboBox = (ComboBox)sender;
    int width = senderComboBox.DropDownWidth;
    Graphics g = senderComboBox.CreateGraphics();
    Font font = senderComboBox.Font;
    int vertScrollBarWidth = 
        (senderComboBox.Items.Count>senderComboBox.MaxDropDownItems)
        ?SystemInformation.VerticalScrollBarWidth:0;

    int newWidth;
    foreach (string s in ((ComboBox)sender).Items)
    {
        newWidth = (int) g.MeasureString(s, font).Width 
            + vertScrollBarWidth;
        if (width < newWidth )
        {
            width = newWidth;
        }
    }
    senderComboBox.DropDownWidth = width;
}

Explanation

The code assumes that the handler is only for a ComboBox and does a cast without checking the type of the sender.

It then gets the Graphics and Font objects for the combo box which will help us to measure the size of the string in the list.

senderComboBox.Items.Count>senderComboBox.MaxDropDownItems checks whether a scrollbar will be displayed. If it is going to be displayed, then we get its width to adjust the size of the drop down list accordingly.

We then scroll through the list of items checking the size of each item and finally setting the width of the drop down list to the width of the largest item including scroll bar width.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

SathishVJ
France France
Member
~/sathishvj

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
Hint: For improved responsiveness ensure Javascript is enabled and choose 'Normal' from the Layout dropdown and hit 'Update'.
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
GeneralThanksmemberor19717 Jun '12 - 5:45 
GeneralMy vote of 5memberHesron M. Gozano19 Nov '11 - 17:36 
Questioncode for webbased applicationmemberAtul Naik16 Nov '11 - 19:05 
Questioncode for webbased applicationmemberAtul Naik16 Nov '11 - 19:03 
GeneralSolution for databound combobox insidememberavalon1237 Apr '11 - 21:29 
GeneralMaking it work with Databound comboboxmemberkanreddyjp11 Oct '10 - 0:38 
GeneralVERY UsefulmemberOmar Gamil16 Apr '10 - 8:30 
GeneralUsing extension methodmemberC#rizje31 May '09 - 5:05 
QuestionCodememberDanielHH28 Apr '09 - 7:01 
QuestionOn which event we have to bind?memberharshkapoors19 Apr '09 - 4:11 
GeneralPlz provide sorce code for this article..memberMember 325917710 Jan '09 - 2:38 
GeneralSuggestion: Don't assign DropDownWidth to variable 'width'memberqian_xu31 Oct '07 - 16:54 
GeneralCouple of suggestionsmemberCleaKO30 Mar '07 - 10:01 
GeneralDropDown list width increment according to the value in listmembervinodgn4 Nov '06 - 18:28 
GeneralRe: DropDown list width increment according to the value in listmemberCleaKO30 Mar '07 - 9:59 
GeneralProblem with foreign language (non-English)memberKiTsuNeKo10 Nov '05 - 22:22 
GeneralDropDownListmemberDoomKickYourAss11 Aug '05 - 5:26 
GeneralVB.Net Codememberalardaen21 May '05 - 2:50 
Generalcustom Validator in asp .netsussDhananjaneyulud13 Dec '04 - 0:45 
GeneralOnly calculate when filling comboboxmemberalcoh30 Nov '04 - 1:36 
GeneralAllow ComboItem to be an object...memberezanker15 Jan '04 - 11:11 
GeneralRe: Allow ComboItem to be an object...memberoscar ho19 Jan '04 - 10:22 
GeneralNot working inside OnDropDownmemberSrinivaasan M13 Jan '04 - 21:11 
GeneralRe: Not working inside OnDropDownmemberSathishVJ14 Jan '04 - 6:09 
GeneralRe: Not working inside OnDropDownmemberSurendran126 Apr '09 - 21:04 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web02 | 2.6.130516.1 | Last Updated 8 Jan 2004
Article Copyright 2004 by SathishVJ
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid