내 첫번째 생각은이 같은 것이었다TextBox의 실제 높이를 얻는 방법은 무엇입니까?
int height = textbox.lines.length * lineheight;
그러나 그것은 단지 \ "의 XD \ 없음"을 계산하고 라인을 포장 할 수있다. 모든 것이 보일 때 (텍스트 내부의 높이) 표시된 줄의 수나 실제 텍스트 높이를 얻을 수 있습니까?
내 첫번째 생각은이 같은 것이었다TextBox의 실제 높이를 얻는 방법은 무엇입니까?
int height = textbox.lines.length * lineheight;
그러나 그것은 단지 \ "의 XD \ 없음"을 계산하고 라인을 포장 할 수있다. 모든 것이 보일 때 (텍스트 내부의 높이) 표시된 줄의 수나 실제 텍스트 높이를 얻을 수 있습니까?
당신이 이제까지 완벽한 측정을 얻을 것이다 나도 몰라,하지만 가까이 가져옵니다
private int GetTextHeight(TextBox tBox) {
return TextRenderer.MeasureText(tBox.Text, tBox.Font, tBox.ClientSize,
TextFormatFlags.WordBreak | TextFormatFlags.TextBoxControl).Height;
}
텍스트 상자가 바보가 될 수 있습니다. 여러 줄이 켜져있는 상태에서 단어를 줄 바꾸기로 만드는 문자를 누르면 Backspace를 눌러도 TextBox 크기를 조정하지 않으면 단어 줄 바꿈을하지 않아도됩니다. 이것은 Win7-64에있었습니다. 나는하지 않는다 TextBox 컨트롤은 항상 그렇게했다.
TextFormatFlags.TextBoxControl은 좀 바보 같다. –
네, 고마워요, 라스. 나는 이미 이것으로부터 뭔가를 만들었습니다 : http://stackoverflow.com/a/4147348/1205147 – Mike
위대한! Graphics.MeasureText를 줄 수와 함께 사용하려고했습니다. (필자의 경우에는 단어 줄 바꾸기가 필요하지 않았습니다.) 이 방법은 각 라인마다 약간 높게 계산되었으므로 많은 라인이있을 때, 나의 방법은 여분의 공간으로 이상하게 보였다. 귀하의 방법은 그 자리에서 정확하게 계산됩니다! 완전한!! – awe
GetLineFromCharIndex() 함수는 텍스트가 래핑 된 경우에도 corrent 라인 인덱스를 제공합니다.
int lineCount = textBox1.GetLineFromCharIndex(int.MaxValue) + 1;
int lineHeightPixel = TextRenderer.MeasureText("X", textBox1.Font).Height;
winform wpf? 뭐? 우리가 너 옆에 서 있지 않다는 것을 알지? – gdoron
가능한 복제본 [텍스트가 맞지 않을 때만 System.Windows.Forms.TextBox의 스크롤 막대를 어떻게 표시 할 수 있습니까?] (http://stackoverflow.com/questions/73110/how-can-i-show- 스크롤바 -에 - 시스템 - 윈도우 - 양식 - 텍스트 - 경우에만 - 텍스트 - d) –
한스 Passant, 어쩌면 부분적으로,하지만이 모든 답변을 거기 이외의 모든 http://stackoverflow.com/a/4147348/1205147은 잘못되었고, b8adamson의 대답은 꽤 길고 뻔뻔스러워 보입니다. 나는 더 좋고 더 나은 해결 방법이있을 것이라고 기대한다. :) – Mike