में किसी पंक्ति की संख्या को दिखाने के लिए कैसे मैं कोड हाइलाइटिंग के साथ एक साधारण टेक्स्ट और स्क्रिप्ट संपादक बना रहा हूं। इसके लिए मैं एक RichTextBox का उपयोग करें। लेकिन मुझे नहीं पता कि इसे कैसे बाईं ओर की लाइनों को दिखाया जाए, जैसे वीएस या नोटपैड ++ में। क्या कोई समाधान है?RichTextBox C#
उत्तर
मैं codeproject लेख कहीं संदर्भित से कोड को फिर से उपयोग कर रहा है, लेकिन हर विकल्प मैं को देखा, थोड़ा भी kludgy लग रहा था की कोशिश की।
इसलिए मैंने एक और RichTextBoxEx बनाया जो लाइन नंबर प्रदर्शित करता है।
लाइन नंबरिंग को चालू या बंद किया जा सकता है। ये तेज़ है। यह साफ-सुथरा स्क्रॉल करता है। आप संख्याओं का रंग, ढाल के लिए पृष्ठभूमि रंग, सीमा मोटाई, फ़ॉन्ट, अग्रणी शून्य का उपयोग करने के लिए चुन सकते हैं। आप "प्रदर्शित के रूप में" या आरटीबी में हार्ड न्यूलाइन के अनुसार संख्या रेखाओं का चयन कर सकते हैं।
उदाहरण:
alt text http://i39.tinypic.com/13zcoz6.jpg
alt text http://i43.tinypic.com/wml2z9.jpg
alt text http://i39.tinypic.com/25i4x3o.jpg
यह सीमाएँ हैं: यह केवल बाईं तरफ संख्या प्रदर्शित करता है। यदि आप परवाह करते हैं तो आप इसे बहुत अधिक प्रयास किए बिना बदल सकते हैं।
कोड को सी # प्रोजेक्ट के रूप में डिज़ाइन किया गया है। हालांकि यह एक बड़े "समाधान" (एक XPath विजुअलाइजेशन टूल) का हिस्सा है, कस्टम रिचटेक्स्टबॉक्स को एक अलग करने योग्य असेंबली के रूप में पैक किया गया है, और यह आपकी नई परियोजनाओं में उपयोग करने के लिए तैयार है। विजुअल स्टूडियो में, बस डीएलएल का संदर्भ जोड़ें, और आप इसे अपनी डिजाइन सतह पर खींच और छोड़ सकते हैं। आप बड़े समाधान से दूसरे कोड को छोड़ सकते हैं।
आप अपना नियंत्रण खींचकर इसे प्राप्त कर सकते हैं। यहां एक उदाहरण है कि खुद को कैसे आकर्षित करें link
मैं प्रत्येक पंक्ति को उस कक्षा में संग्रहीत करूंगा जिसमें समृद्ध टेक्स्टबॉक्स को प्रकाशित करने के तरीके हैं। उस विधि में, आप वर्ग में अपनी स्थिति के आधार पर लाइन नंबर प्रीपेड कर सकते हैं।
उदाहरण के लिए (बहुत मोटे तौर पर):
class myText
{
public List<string> Lines;
public string GetList()
{
StringBuilder sb = new StringBuilder();
int i = 0;
foreach (string s in Lines)
{
sb.AppendFormat("{0}: {1}", i, s).AppendLine();
i++;
}
return sb.ToString();
}
}
Scintilla.Net http://scintillanet.codeplex.com/ अपनी आवश्यकताओं के लिए सबसे उपयुक्त समाधान नहीं हो सकता है। लेकिन मेरी परियोजना के लिए मैंने चेसो द्वारा सुझाए गए समाधान का उपयोग किया (XPath विज़ुअलाइज़र से RichTextBoxEx)। यह बहुत बड़ा दस्तावेज नहीं है, यह बहुत आसान और तेज़ है। इंटरनेट से अन्य सभी .NET घटक अविश्वसनीय रूप से धीमे थे।
आसान तरीका:
Dim myArray = RichTextBox1.Text.Split()
Dim cnt As Integer = 0
RichTextBox1.Clear()
Do While cnt < myArray.Count
RichTextBox1.AppendText(cnt & ":" & myArray(cnt) & vbNewLine)
cnt = cnt + 1
Loop
public int getWidth()
{
int w = 25;
// get total lines of richTextBox1
int line = richTextBox1.Lines.Length;
if (line <= 99)
{
w = 20 + (int)richTextBox1.Font.Size;
}
else if (line <= 999)
{
w = 30 + (int)richTextBox1.Font.Size;
}
else
{
w = 50 + (int)richTextBox1.Font.Size;
}
return w;
}
public void AddLineNumbers()
{
// create & set Point pt to (0,0)
Point pt = new Point(0, 0);
// get First Index & First Line from richTextBox1
int First_Index = richTextBox1.GetCharIndexFromPosition(pt);
int First_Line = richTextBox1.GetLineFromCharIndex(First_Index);
// set X & Y coordinates of Point pt to ClientRectangle Width & Height respectively
pt.X = ClientRectangle.Width;
pt.Y = ClientRectangle.Height;
// get Last Index & Last Line from richTextBox1
int Last_Index = richTextBox1.GetCharIndexFromPosition(pt);
int Last_Line = richTextBox1.GetLineFromCharIndex(Last_Index);
// set Center alignment to LineNumberTextBox
LineNumberTextBox.SelectionAlignment = HorizontalAlignment.Center;
// set LineNumberTextBox text to null & width to getWidth() function value
LineNumberTextBox.Text = "";
LineNumberTextBox.Width = getWidth();
// now add each line number to LineNumberTextBox upto last line
for (int i = First_Line; i <= Last_Line + 2; i++)
{
LineNumberTextBox.Text += i + 1 + "\n";
}
}
private void Form1_Load(object sender, EventArgs e)
{
LineNumberTextBox.Font = richTextBox1.Font;
richTextBox1.Select();
AddLineNumbers();
}
private void richTextBox1_SelectionChanged(object sender, EventArgs e)
{
Point pt = richTextBox1.GetPositionFromCharIndex(richTextBox1.SelectionStart);
if (pt.X == 1)
{
AddLineNumbers();
}
}
private void richTextBox1_VScroll(object sender, EventArgs e)
{
LineNumberTextBox.Text = "";
AddLineNumbers();
LineNumberTextBox.Invalidate();
}
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
if (richTextBox1.Text == "")
{
AddLineNumbers();
}
}
private void richTextBox1_FontChanged(object sender, EventArgs e)
{
LineNumberTextBox.Font = richTextBox1.Font;
richTextBox1.Select();
AddLineNumbers();
}
private void LineNumberTextBox_MouseDown(object sender, MouseEventArgs e)
{
richTextBox1.Select();
LineNumberTextBox.DeselectAll();
}
private void Form1_Resize(object sender, EventArgs e)
{
AddLineNumbers();
}
- 1. RichTextBox
- 2. RichTextBox
- 3. RichTextBox
- 4. RichTextBox C# में टेक्स्ट को 'संरेखित' कैसे करें?
- 5. WPF RichTextBox
- 6. WPF RichTextBox
- 7. RichTextBox ScrollToCaret
- 8. WinForms RichTextBox
- 9. एक RichTextBox
- 10. गतिशील रूप से एक RichTextBox
- 11. चयन richtextbox wpf
- 12. उपाय RichTextBox नियंत्रण
- 13. RichTextBox अधिकतम आकार सीमा?
- 14. WPF RichTextBox लाइन नंबर
- 15. RichTextBox सी # WinForms
- 16. WPF RichTextBox सेट
- 17. मैं एक richtextbox नियंत्रण
- 18. RichTextBox न्यूलाइन रूपांतरण?
- 19. RichTextBox रंग चयनित लाइनें
- 20. FlowDocument कर्सर RichTextBox
- 21. RichTextBox ऑटोस्कोल को अक्षम करना
- 22. विंडोज फॉर्म RichTextBox कर्सर स्थिति
- 23. केवल RichTextBox पाठ कैसे बनाएं?
- 24. सी # RichTextBox चुनें निर्दिष्ट पाठ
- 25. C/C++
- 26. RichTextBox (WPF) में स्ट्रिंग प्रॉपर्टी "टेक्स्ट"
- 27. RichTextBox नई लाइन/गाड़ी वापसी पात्रों
- 28. एक RichTextBox स्ट्रिंग के विभिन्न हिस्सों रंग
- 29. RichTextBox से आरटीएफ कैसे प्राप्त करें
- 30. टेक्स्टबॉक्स और RichTextbox wpf के बीच अंतर?
कोड परियोजना पर इस परियोजना चेक आउट - http://www.codeproject.com/KB/edit/numberedtextbox.aspx –
हो सकता है कि आप एक ही नियंत्रण रखना चाहिए नोटपैड ++ के रूप में। यह Scintilla.Net है: http://scintillanet.codeplex.com/ – Oliver