none
Seçilen ITEM üzerinden yeni bir işlem gerçekleştirmek RRS feed

  • Soru

  • Merhabalar, öncelikle sormak istediğim soruyu kısa bir örnekle açıklamak istiyorum

    http://i51.tinypic.com/2chmhs4.jpg

    Örneğin burda hangi tarayıcıyı indirmek istiyorsunuz tarzında bir soru yöneltilmiş, seçim yapılıyor ve 'download' butonuna basılınca da indirme işlemine geçiliyor. Benim sadece sormak istediğim yandaki Check'ler olmadan sadece 'Google Chrome', 'Mozilla Firefox' yazan bir listbox listview artık size kalmış araç lazım. Bunu nasıl yapabilirim ? Aynısı, itemi seçip butona bastığımda bi işlem gerçekleşicek...

    Teşekkürler


    31 Mart 2012 Cumartesi 19:43

Yanıtlar

  • Merhaba Barış Bey,

    MSDN Forumlarına hoşgeldiniz.

    Bu iş için key-value ikilisini ifade eden IDictionary ve HashTable sınıfını şiddetle tavsiye ederim. Örneğin listbox'da çeşitli tarayıcı isimleri olsun ve bunlar "key" - anahtar olacaktır, bunların değerleri yani "indirme adresleri" ise "value" - değer olacaktır. Bu durumda tam bir örnek aşağıdaki gibidir, formda bir listbox (ListBox1) ve bir button (Button1) olmalıdır:

    Public Class Form1
    
        Dim ht As New Hashtable
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            ht.Add("Mozilla Firefox", "http://www.mozilla.org/en-US/firefox/new/")
            ht.Add("Google Chrome", "https://www.google.com/chrome")
            ht.Add("Internet Explorer 9", "http://www.microsoft.com/download/en/details.aspx?id=13950")
            ht.Add("Opera", "http://www.opera.com/download/")
            '.....devam edebilirsin
    
    
            ' Keyleri listboxa ekle
            For Each dic As Object In ht.Keys
                ListBox1.Items.Add(dic)
            Next
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            ' seçili tarayıcıyı indirme sayfasına git gibi, ya da istediğin işlemi yap!
            Dim adres As String = CStr(ht(ListBox1.SelectedItem))
    
            ' seçili tarayıcının indirme adresini aç
            Process.Start(adres)
        End Sub
    
    End Class

    Örnekle asıl kavramanız gereken nokta HashTable'a eklenen anahtarlar (Add methodu) ve CStr(ht(ListBox1.SelectedItem)) ile Button1 içindeki tıklama olayında bu anahtarın seçili listbox öğesi bazında değerini yani indirme adresini almak. Siz tabii ki indirme dışında ilgili anahtarın değerini istediğiniz yerlerde kullanabilirsiniz.

    İyi çalışmalar dilerim.


    Best regards, Saygılarımla, Onur Güzel

    "Bildiğim tek şey aslında hiçbirşey bilmediğimdir."


           

    1 Nisan 2012 Pazar 10:15
    Moderatör

Tüm Yanıtlar

  • Merhaba Barış Bey,

    MSDN Forumlarına hoşgeldiniz.

    Bu iş için key-value ikilisini ifade eden IDictionary ve HashTable sınıfını şiddetle tavsiye ederim. Örneğin listbox'da çeşitli tarayıcı isimleri olsun ve bunlar "key" - anahtar olacaktır, bunların değerleri yani "indirme adresleri" ise "value" - değer olacaktır. Bu durumda tam bir örnek aşağıdaki gibidir, formda bir listbox (ListBox1) ve bir button (Button1) olmalıdır:

    Public Class Form1
    
        Dim ht As New Hashtable
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            ht.Add("Mozilla Firefox", "http://www.mozilla.org/en-US/firefox/new/")
            ht.Add("Google Chrome", "https://www.google.com/chrome")
            ht.Add("Internet Explorer 9", "http://www.microsoft.com/download/en/details.aspx?id=13950")
            ht.Add("Opera", "http://www.opera.com/download/")
            '.....devam edebilirsin
    
    
            ' Keyleri listboxa ekle
            For Each dic As Object In ht.Keys
                ListBox1.Items.Add(dic)
            Next
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            ' seçili tarayıcıyı indirme sayfasına git gibi, ya da istediğin işlemi yap!
            Dim adres As String = CStr(ht(ListBox1.SelectedItem))
    
            ' seçili tarayıcının indirme adresini aç
            Process.Start(adres)
        End Sub
    
    End Class

    Örnekle asıl kavramanız gereken nokta HashTable'a eklenen anahtarlar (Add methodu) ve CStr(ht(ListBox1.SelectedItem)) ile Button1 içindeki tıklama olayında bu anahtarın seçili listbox öğesi bazında değerini yani indirme adresini almak. Siz tabii ki indirme dışında ilgili anahtarın değerini istediğiniz yerlerde kullanabilirsiniz.

    İyi çalışmalar dilerim.


    Best regards, Saygılarımla, Onur Güzel

    "Bildiğim tek şey aslında hiçbirşey bilmediğimdir."


           

    1 Nisan 2012 Pazar 10:15
    Moderatör
  • Merhaba Barış Bey,

    MSDN Forumlarına hoşgeldiniz.

    Bu iş için key-value ikilisini ifade eden IDictionary ve HashTable sınıfını şiddetle tavsiye ederim. Örneğin listbox'da çeşitli tarayıcı isimleri olsun ve bunlar "key" - anahtar olacaktır, bunların değerleri yani "indirme adresleri" ise "value" - değer olacaktır. Bu durumda tam bir örnek aşağıdaki gibidir, formda bir listbox (ListBox1) ve bir button (Button1) olmalıdır:

    Public Class Form1
    
        Dim ht As New Hashtable
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            ht.Add("Mozilla Firefox", "http://www.mozilla.org/en-US/firefox/new/")
            ht.Add("Google Chrome", "https://www.google.com/chrome")
            ht.Add("Internet Explorer 9", "http://www.microsoft.com/download/en/details.aspx?id=13950")
            ht.Add("Opera", "http://www.opera.com/download/")
            '.....devam edebilirsin
    
    
            ' Keyleri listboxa ekle
            For Each dic As Object In ht.Keys
                ListBox1.Items.Add(dic)
            Next
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            ' seçili tarayıcıyı indirme sayfasına git gibi, ya da istediğin işlemi yap!
            Dim adres As String = CStr(ht(ListBox1.SelectedItem))
    
            ' seçili tarayıcının indirme adresini aç
            Process.Start(adres)
        End Sub
    
    End Class

    Örnekle asıl kavramanız gereken nokta HashTable'a eklenen anahtarlar (Add methodu) ve CStr(ht(ListBox1.SelectedItem)) ile Button1 içindeki tıklama olayında bu anahtarın seçili listbox öğesi bazında değerini yani indirme adresini almak. Siz tabii ki indirme dışında ilgili anahtarın değerini istediğiniz yerlerde kullanabilirsiniz.

    İyi çalışmalar dilerim.


    Best regards, Saygılarımla, Onur Güzel

    "Bildiğim tek şey aslında hiçbirşey bilmediğimdir."


           

    Öncelikle cevabınız için teşekkür ederim :)

    Hashtable olayını da araştıracağım yardımınız için sağolun

    Edit : Sanırım kendisi keyleri alfabetik sıraya göre koyuyor ben kendim düzenleyebiliyor muyum acaba sırasını ?

    Edit : Aman tanrım ben bu ayrıntıyı nasıl kaçırdım yaa :))) 

     If ListBox1.SelectedItems.Contains("Google Chrome") Then
                Diagnostics.Process.Start("www.google.com")
            End If
    :))))


    1 Nisan 2012 Pazar 12:42
  • HashTable bu isler icin kullanislidir ve keyleri bir sira ile tutmaz, indeksli bir Key-Value ikilisi istiyorsaniz SortedList koleksiyon sinifina bakiniz. Ayirca bu is icin IF-THEN hic kullanisli degil, dusunsenize listbox'daki her item icin if-then yazsaniz isin icinden cikamazsiniz, Halbuki Key belirterek Value elde etmek bir satirlik is.

    Umarim anlatabilmisimdir.

    Kolay gelsin.


    Best regards, Saygılarımla, Onur Güzel

    "Bildiğim tek şey aslında hiçbirşey bilmediğimdir."


           

    1 Nisan 2012 Pazar 15:19
    Moderatör