मैं रिच टेक्स्ट बॉक्स ऊंचाई मसलों के लिए हल मिल गया .. मैं सामान्य उपयोग के लिए यह एक बदलाव कर दिया है ..
निम्नलिखित बनाएं आपके आवेदन में structs ....
[StructLayout(LayoutKind.Sequential)]
public struct RECT {
public Int32 left;
public Int32 top;
public Int32 right;
public Int32 bottom;
}
[StructLayout(LayoutKind.Sequential)]
public struct SCROLLBARINFO {
public Int32 cbSize;
public RECT rcScrollBar;
public Int32 dxyLineButton;
public Int32 xyThumbTop;
public Int32 xyThumbBottom;
public Int32 reserved;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public Int32[] rgstate;
}
फार्म के लिए अपनी कक्षा में निजी चर निम्नलिखित फार्म के लिए अपने वर्ग के लिए
private UInt32 SB_VERT = 1;
private UInt32 OBJID_VSCROLL = 0xFFFFFFFB;
[DllImport("user32.dll")]
private static extern
Int32 GetScrollRange(IntPtr hWnd, UInt32 nBar, out Int32 lpMinPos, out Int32 lpMaxPos);
[DllImport("user32.dll")]
private static extern
Int32 GetScrollBarInfo(IntPtr hWnd, UInt32 idObject, ref SCROLLBARINFO psbi);
जोड़ें निम्न विधि (जहां कभी आप रिच टेक्स्ट ऊंचाई की गणना करनी है) बनाएं
private int CalculateRichTextHeight(string richText) {
int height = 0;
RichTextBox richTextBox = new RichTextBox();
richTextBox.Rtf = richText;
richTextBox.Height = this.Bounds.Height;
richTextBox.Width = this.Bounds.Width;
richTextBox.WordWrap = false;
int nHeight = 0;
int nMin = 0, nMax = 0;
SCROLLBARINFO psbi = new SCROLLBARINFO();
psbi.cbSize = Marshal.SizeOf(psbi);
richTextBox.Height = 10;
richTextBox.ScrollBars = RichTextBoxScrollBars.Vertical;
int nResult = GetScrollBarInfo(richTextBox.Handle, OBJID_VSCROLL, ref psbi);
if (psbi.rgstate[0] == 0) {
GetScrollRange(richTextBox.Handle, SB_VERT, out nMin, out nMax);
height = (nMax - nMin);
}
return height;
}
आपको अपनी आवश्यकता के अनुसार इसे कार्य करने के लिए उपरोक्त विधि को संशोधित करने की आवश्यकता हो सकती है ... सुर बनाएं ई विधि सामान्य नहीं पाठ करने के लिए पैरामीटर के रूप में Rtf स्ट्रिंग भेजने के लिए है और यह भी विधि में RichTextBox चर के लिए उपलब्ध चौड़ाई और ऊंचाई आवंटित करने के लिए सुनिश्चित करें ...
आप WordWrap आपकी आवश्यकता पर निर्भर करता है के साथ खेल सकते ...
धन्यवाद। मैं उस पृष्ठ को काफी समझ नहीं पा रहा हूं। यह पाठ क्यों आकर्षित करता है? क्या यह मुझे सिर्फ चौड़ाई और ऊंचाई मान वापस भेज सकता है, इसलिए मैं RichTextBox के आकार को नए आकार में रीसेट कर सकता हूं? –
शायद अगर मैं एक अलग सवाल पूछता हूं तो यह चीजों को सरल बना देगा ... –
'TextRenderer.MeasureText' कुछ भी नहीं खींचता है; यह बस पिक्सेल में पाठ का आकार देता है। – SLaks