ComboBox Item이 ComboBox보다 큰 사이즈여서 보여지지 않는 것을 보여주게 하기 위해서
Item의 글자 넓이를 알아내고자 한다
뭐 여러방법이 있겠지만 간단한 코드로 해보자
처음 생각엔 바이트로 끈어서 특정 크기만큼의 한바이트로 잡으면 되겠지 했지만 한글과 영문의 사이즈가 다르다. 멍청한 짓이었다. ㅡㅡ;
아래 방법을 사용하자
첫번째 Graphics를 이용한 방법
그리고 핑크색 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;
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;