허당 레몬도리
ComboBox Item이 ComboBox보다 큰 사이즈여서 보여지지 않는 것을 보여주게 하기 위해서
Item의 글자 넓이를 알아내고자 한다

뭐 여러방법이 있겠지만 간단한 코드로 해보자
처음 생각엔 바이트로 끈어서 특정 크기만큼의 한바이트로 잡으면 되겠지 했지만 한글과 영문의 사이즈가 다르다. 멍청한 짓이었다. ㅡㅡ;

아래 방법을 사용하자

첫번째 Graphics를 이용한 방법

Graphics g = control.CreateGraphics();

int width = (int)g.MeasureString(aString, control.Font).Width;

g.dispose();

주황색 control은 해당하는 컨트롤이다 여기선 ComboBox가 되겠다.
그리고 핑크색 aString은 해당하는 글자이다.

두번째 TextRenderer를 이용한 방법

int width = TextRenderer.MeasureText(aString, control.Font).Width;


두 가지 방법 중 TextRenderer를 이용한 방법이 코드도 짧으니 사용 하시는게 좋을거 같다.
필요한 방법으로 사용하면 된다.

적용하자면 아래와 같다.
부족하지만 간단하게 적어봤다
            int tempwidth = 0;
            string temp = "";
            for (int i = 0; i < comboBox1.Items.Count; i++)
            {
                temp = comboBox1.Items[i].ToString();
                if (tempwidth < (int)TextRenderer.MeasureText(temp, comboBox1.Font).Width)
                {
                    tempwidth = (int)TextRenderer.MeasureText(temp, comboBox1.Font).Width;
                }
            }
            comboBox1.DropDownWidth = tempwidth;
profile

허당 레몬도리

@LemonDory

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!