Gönderen Konu: TextBox icinde arama yapma ve secili hale getirme  (Okunma sayısı 5923 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

« : »
VisualBasic ile textBox icinde arama yaptirip bulunan tum benzer kelimeleri secili hale getirmeye calisiyorum ama beceremedim. Yardim ederseniz sevinirim.  :)

Soyle bir deneme yaptim:
Kod: [Seç]
For Each AradigimKelime In TextBox3.Text //Foreach te pek iyi degilim yanlis olabilir.
                    TextBox3.Focus()
                    TextBox3.Select(X, AradigimKelime.Length) //X yazan yere sanirim aranilan kelimenin baslangic noktasini yazacagim ama nasil?
                Next

Ayrica For Each icine IF TextBox3.Text.Contains(AradigimKelim) seklinde kosul eklemem gerekir mi?
بسم الله الرحمن الرحيم
|ACEMİLER İÇİN İLK DURAK|Çözüldü|Kod etiketi|

« Yanıtla #1 : »
String işlemleri ile ilgili sınıfın işlevlerini inceleyiniz... find gibi bir işlev olmalı. Bu işlevleriden birisi size X değerinizi veriyor olacaktır zaten...

IF ifadesini eklemek ise yararınıza olur... Aksi halde aradığınız kelime yoksa dahi son duruma getirecek olduğunuz for each ifadesi çalıştırılacaktır...


Not: String sınıfı size bulduğu ilk alt stringin indexini döndürüyor olabilir... Eğer daha sonraileri kendiniz bulmanız gerekirse yani string sınıfı içsel olarakbunları barındırmıyorsa; daha sonra arayacağınız AradadigimKelime değişkenini TextBox3.Text[AradadigimKelimeLength] kadar sonra aramanız gerekir... Yoksa bir tane bulduğunuz takdirde sonsuz döngüye girebilir program =)
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
 Derken ölüm bile bu nasıl dünya?
 Benden ölüm dile, batıyor gün yine
 Burası dünya?

« Yanıtla #2 : »
String işlemleri ile ilgili sınıfın işlevlerini inceleyiniz... find gibi bir işlev olmalı. Bu işlevleriden birisi size X değerinizi veriyor olacaktır zaten...
2 saattir arastiriyorum ama yukaridaki koddan fazla ileriye gidemedim.  :(

Alıntı
IF ifadesini eklemek ise yararınıza olur... Aksi halde aradığınız kelime yoksa dahi son duruma getirecek olduğunuz for each ifadesi çalıştırılacaktır...

Yukaridaki kod parcasi kosul saglaniyorsa calisyor. Yani TextBox icinde aranilan kelime varsa calisiyor. Yinede gerek var mi ?

Tesekkurler.
بسم الله الرحمن الرحيم
|ACEMİLER İÇİN İLK DURAK|Çözüldü|Kod etiketi|

« Yanıtla #3 : »
VisualBasic için en iyi dökümantasyon msdn olacaktır sanırım...

http://msdn.microsoft.com/en-us/library/ms172836.aspx

Bu makaleyi incelediniz mi?

Bu arada bir string içerisinde arama işlemi için

InStr işlevini kullanmanız gerekiyormuş...

http://gokhanca.com/visualbasic-makale/70-visual-basic-string-fonksiyonlar.html

Adresinde örnek mevcut...

Kolay gelsin.. =)
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
 Derken ölüm bile bu nasıl dünya?
 Benden ölüm dile, batıyor gün yine
 Burası dünya?

« Yanıtla #4 : »
Kod: [Seç]
                For Each ArananKelime In TextBox3.Text
                    TextBox3.Select(TextBox3.Text.IndexOf(ArananKelime), ArananKelime.Length)
                    TextBox3.Focus()
                Next

Simdi secili hale getirebiliyorum ancak sadece ilk bulunan kelimeyi, tum bulunan kelimeleri secili hale getirebilir miyiz ?
بسم الله الرحمن الرحيم
|ACEMİLER İÇİN İLK DURAK|Çözüldü|Kod etiketi|

« Yanıtla #5 : »
For each'i biraz araştırmak gerekecek sanırım.. Örneğin ben yanlış görmüyorsam siz zaten ArananKelime olaral TextBox3.Text strign'i içerisindeki tüm kelimeleri teker teker ArananKelime'ye atıyorsunuz? Yanlış mı görüyorum... Sizin ihtiyacınız olan InStr gibi bir fonksiyon...

* ArananKelime'yi ilgili String dizisi içerisinde ara...
* Index'ini al ayrıca ve TextBox3.Select(BulunanIndex, ArananKelime.Length)

* Aramaya index'ten itibaren devam et. Taki arama sonucu 0 olana kadar bu işleme devam et...
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
 Derken ölüm bile bu nasıl dünya?
 Benden ölüm dile, batıyor gün yine
 Burası dünya?

« Yanıtla #6 : »
Galiba evet, for each dongusunu yanlis kullaniyorum, eksigim var o noktada.

InStr ve IndexOf ayni degeri donduruyor, alttaki orneklere bakabilirsiniz.

Her iki ornekte, aranan string arama yapilan string icerisinde yoksa -1, varsa baslangic noktasini donduruyor.
-InStr(Kaçıncı karakterden itibaren,Nerde aranacak,Ne aranacak)
-TextBox1.Text.IndexOf(Ne aranacak,Kaçıncı karakterden itibaren,Kaç karakter)

Sanirim atladigim bir nokta var o da TextBox'un coklu secmeyi(multi select) desteklememesi(?)
Yardimin icin cok tesekkurler @sem0900, sanirim bundan daha fazlasini yapamayacagiz  :)
بسم الله الرحمن الرحيم
|ACEMİLER İÇİN İLK DURAK|Çözüldü|Kod etiketi|