none
Richtextboxta satırların yerini değiştirme RRS feed

  • Soru

  • Merhabalar

    Form uygulamasında Richtextbox'ın içeriğinde ki örneğin 1. ve 7. satırda ki yazıların buton aracılığıyla yer değiştirmesini  istiyorum bunu nasıl yapabilirim. kodunu yazabilir misiniz?.

    şimdiden teşekkür ederim.


    • Düzenleyen arasc 1 Ocak 2020 Çarşamba 22:39
    1 Ocak 2020 Çarşamba 18:50

Tüm Yanıtlar

  • Şu şekilde çalışıyor

                string[] satılar = richTextBox1.Text.Split('\n');
                string X=satılar[1];
                satılar[1] = satılar[3];
                satılar[3] = X;
                richTextBox1.Clear();
                for (int i = 0; i < satılar.Length; i++)
                {
                    richTextBox1.AppendText(satılar[i]+"\n");
                }

    Ama şu şekilde de çalışması lazımken çalışmadı. Belki benim bilmediğim bir şeyler var..

                string Y = richTextBox1.Lines[1];
                richTextBox1.Lines[1] = richTextBox1.Lines[3];
                richTextBox1.Lines[3] = Y;
    Sanki richtextBox1.Lines[] ile sadece değer okunabiliyor..

    2 Ocak 2020 Perşembe 07:29
  • @Özcan, bu gibi basit işlerde çalışan koddan daha fazlasını yazmaya çalışmanı öneririm, kaslar gelişir. Çok uzun bir metinde bu kod felaket yavaş çalışacaktır. Keyif senin.

    www.cihanyakar.com

    2 Ocak 2020 Perşembe 08:20
  • @Özcan, bu gibi basit işlerde çalışan koddan daha fazlasını yazmaya çalışmanı öneririm, kaslar gelişir. Çok uzun bir metinde bu kod felaket yavaş çalışacaktır. Keyif senin.

    www.cihanyakar.com

    Abi eskiden bu alanda kendimi geliştirip iş bulmaya çalışıyordum o zaman çok uğraşıyordum artık biraz hobi gibi takılıyorum. Bir firmanın AR-GE bölümünde Çizim tasarım modelleme üzerine işe girdim. Buradan yanıtlayabildiğim bazı soruları da yanıtlamaya çalışıyorum. 2. verdiğim kod daha hızlı çalışır aslında ama nedense çalışmadı.
    2 Ocak 2020 Perşembe 08:46
  • @Özcan, bu gibi basit işlerde çalışan koddan daha fazlasını yazmaya çalışmanı öneririm, kaslar gelişir. Çok uzun bir metinde bu kod felaket yavaş çalışacaktır. Keyif senin.


    www.cihanyakar.com

    Abi eskiden bu alanda kendimi geliştirip iş bulmaya çalışıyordum o zaman çok uğraşıyordum artık biraz hobi gibi takılıyorum. Bir firmanın AR-GE bölümünde Çizim tasarım modelleme üzerine işe girdim. Buradan yanıtlayabildiğim bazı soruları da yanıtlamaya çalışıyorum. 2. verdiğim kod daha hızlı çalışır aslında ama nedense çalışmadı.
    Nerede mutluysan :)

    www.cihanyakar.com

    2 Ocak 2020 Perşembe 09:34
  • yardımınız için çok teşekkür ederim. en kısa sürede deneyip sizlere geri dönüş sağlayacağım. :)
    2 Ocak 2020 Perşembe 12:47
  • RichTextBox'ta format, renk vs vardır. Degisiklik yaparken bunu gözönünde bulundurmalisiniz. Formatlama onemli degil ise degisiklik basitçe .Lines koleksiyonundan yapılır. 

    void Main()
    {
    	Form f = new Form { Height = 400, Width = 600 };
    	ListBox lb = new ListBox { Top = 10, Left = 10, Width = 100 };
    	RichTextBox rtb = new RichTextBox { Top = 10, Left = 150, Width = 400, Height = 350, ReadOnly = true };
    	Button b = new Button { Top = 200, Left = 10, Text = "Degistir" };
    	var data = GetDocsFromDb().ToList();
    	lb.DataSource = data;
    	f.Controls.Add(lb);
    	f.Controls.Add(rtb);
    	f.Controls.Add(b);
    	lb.SelectedValueChanged += (sender, args) =>
    	{
    		var doc = ((ListBox)sender).SelectedItem as Doc;
    		if (doc != null)
    		{
    			rtb.Rtf = doc.RTF;
    		}
    		else
    		{
    			rtb.Rtf = "";
    		}
    	};
    
    	b.Click += (sender, e) =>
    	{
    		var first = 1;
    		var second = 3;
    		// format onemli olmasaydi:
    		//			var lines = rtb.Lines;
    		//			(lines[first], lines[second]) = (lines[second], lines[first]);
    		//			rtb.Lines = lines;
    
    		if (rtb.Lines.Length > second)
    		{
    			var firstText = rtb.Lines[first];
    			var secondText = rtb.Lines[second];
    			rtb.Find(secondText);
    			rtb.SelectedText = firstText;
    			rtb.Find(firstText);
    			rtb.SelectedText = secondText;
    		}
    	};
    
    	f.Show();
    }
    
    
    private IEnumerable<Doc> GetDocsFromDb()
    {
    	var ornekler = new List<Doc> {
    	new Doc { Id=1, Aciklama="Ornek1", RTF=File.ReadAllText(@"C:\Program Files (x86)\Microsoft Visual Studio 14.0\SDK\Bootstrapper\Packages\DotNetFX40Client\en\Eula.rtf")},
    	new Doc { Id=2, Aciklama="Ornek2", RTF=File.ReadAllText(@"C:\Program Files (x86)\Microsoft Visual Studio 14.0\SDK\Bootstrapper\Packages\DotNetFX40KB2468871\en\Eula.rtf")},
    	new Doc { Id=3, Aciklama="Ornek3", RTF=File.ReadAllText(@"C:\Program Files (x86)\Microsoft Visual Studio 14.0\SDK\Bootstrapper\Packages\DotNetFX451\en\Eula.rtf")},
    	};
    	return ornekler;
    }
    public class Doc
    {
    	public int Id { get; set; }
    	public string Aciklama { get; set; }
    	public string RTF { get; set; }
    	public override string ToString()
    	{
    		return this.Aciklama;
    	}
    }



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    2 Ocak 2020 Perşembe 15:33
    Yanıtlayıcı