List<String> liste = new List<String>(20);
Random rastgele = new Random(20);
int i;
liste.Add("Değişken 1");
liste.Add("Değişken 2");
liste.Add("Değişken 3");
liste.Add("Değişken 4");
liste.Add("Değişken 5");
liste.Add("Değişken 6");
liste.Add("Değişken 7");
liste.Add("Değişken 8");
liste.Add("Değişken 9");
liste.Add("Değişken 10");
liste.Add("Değişken 11");
liste.Add("Değişken 12");
liste.Add("Değişken 13");
liste.Add("Değişken 14");
liste.Add("Değişken 15");
liste.Add("Değişken 16");
liste.Add("Değişken 17");
liste.Add("Değişken 18");
liste.Add("Değişken 19");
liste.Add("Değişken 20");
if (liste.Count >= 1)
{
i = rastgele.Next(0, liste.Count);
MessageBox.Show("Değişken : " + i.ToString() + " \n " + liste[i]);
liste.Remove(liste[i]);
}
else
{
MessageBox.Show("Liste boş!");
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public class Kavram
{
public string Adi
{
get;
set;
}
public string Aciklama
{
get;
set;
}
public static List<int> kullanilanIndeksler = new List<int>();
}
private List<Kavram> Kavramlar;
private void Form1_Load(object sender, EventArgs e)
{
//Listeyi Kavram sınıfı nesneleri ile dolduruyoruz.
Kavramlar = new List<Kavram>();
Kavramlar.Add(new Kavram
{
Adi = "Kavram1",
Aciklama = "Aciklama1"
});
Kavramlar.Add(new Kavram
{
Adi = "Kavram2",
Aciklama = "Aciklama2"
});
Kavramlar.Add(new Kavram
{
Adi = "Kavram3",
Aciklama = "Aciklama3"
});
Kavramlar.Add(new Kavram
{
Adi = "Kavram4",
Aciklama = "Aciklama4"
});
}
private void btnKavramGetir_Click(object sender, EventArgs e)
{
int indeks;
//Tekrarlı olmayan rastgele indeks üretme sekansı
while (true)
{
Random r = new Random();
indeks = r.Next(Kavramlar.Count);
/*Rastgele üretilen indeks, Kavram.kullanilanIndeksler'de mevcut ise daha önce kullanılmıştır.
Bu yüzden kullanılmamış bir indeks bulana kadar rastgele sayı üretmeye devam.
*/
bool kavramDahaOnceGösterilmismi=Kavram.kullanilanIndeksler.Contains(indeks);
if (kavramDahaOnceGösterilmismi==false)
{
//Kullanılmamış bir indeks bulduk.
Kavram.kullanilanIndeksler.Add(indeks);
break;
}
}
//Daha önce kullanılmamış bir indeks elimizde olduğuna göre bilgileri gösterebiliriz.
Kavram siradakiKavram = Kavramlar[indeks];
label1.Text = siradakiKavram.Adi;
label2.Text = siradakiKavram.Aciklama;
/*
Kullanılmamış tüm indeksler tükendiyse yeniden başlayabilmek için
Kavram.kullanilanIndeksler listesini sıfırlarız.
*/
if (Kavram.kullanilanIndeksler.Count == Kavramlar.Count)
{
MessageBox.Show("Tüm kavram ve açıklamaları gösterildi.\nGösterime en baştan başlanacak.","Mesaj");
Kavram.kullanilanIndeksler.Clear();
}
}
}
//ObservableCollection olmasının sebebi ListBox'ların değişimi algılaması
public ObservableCollection<string> İlkListe { get; set; }
public ObservableCollection<string> SonListe { get; set; }
public MainWindow()
{
InitializeComponent();
İlkListe = new ObservableCollection<string>() { "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20" };
SonListe = new ObservableCollection<string>();
ListBox_İlk.ItemsSource = İlkListe;
ListBox_Son.ItemsSource = SonListe;
}
private void Button_Aktar_Click(object sender, RoutedEventArgs e)
{
if(SonListe.Count < İlkListe.Count)
{
Random random = new Random();
string eklenecek;
do
{
int rastgelesayı = random.Next(İlkListe.Count);
eklenecek = İlkListe.ElementAt(rastgelesayı);
} while (SonListe.Contains(eklenecek));
SonListe.Add(eklenecek);
}
else
{
MessageBox.Show("Aktarılacak Değer Kalmadı", "HATA");
}
}
Ben programı denedim ve sonra paylaştım yapmanız gerek tek şey buton ekleyip kodları olması gereken yere eklemek. Dikkatli olun.Verdiğiniz bilgi için çok sağ olun ancak şimdi de şöyle bir sorunum var butona bastığım zaman Değişken 9 ile başlıyor ve belli bir sıraya göre gidiyor ve her programı çalıştırdığımda sürekli bunu yapıyor. Bense her çalıştırdığımda farklı değerler yazdırmasını istiyorum.
Bir tane liste değişkeni tanımla ve buna istediğin değerleri aktar. Daha sonra buton olayına rastgele sayı oluşturan bir değişken tanımla bunun listede ki eleman sayısı ile sıfır arasında değer atamasını sağla. Değeri tanımladığında ekrana nasıl yazdıracak isen Liste[Rastgele] şeklinde yazdır ve yazdırdığını listeden sil. Listenin boş olup olmadığını kontrol etmeyi unutma.
Genel değişkenler :
Kod:List<String> liste = new List<String>(20); Random rastgele = new Random(20); int i;
Arayüz yükleniş sırasında çalıştırılacaklar :
Kod:liste.Add("Değişken 1"); liste.Add("Değişken 2"); liste.Add("Değişken 3"); liste.Add("Değişken 4"); liste.Add("Değişken 5"); liste.Add("Değişken 6"); liste.Add("Değişken 7"); liste.Add("Değişken 8"); liste.Add("Değişken 9"); liste.Add("Değişken 10"); liste.Add("Değişken 11"); liste.Add("Değişken 12"); liste.Add("Değişken 13"); liste.Add("Değişken 14"); liste.Add("Değişken 15"); liste.Add("Değişken 16"); liste.Add("Değişken 17"); liste.Add("Değişken 18"); liste.Add("Değişken 19"); liste.Add("Değişken 20");
Butona eklenecekler :
Kod:if (liste.Count >= 1) { i = rastgele.Next(0, liste.Count); MessageBox.Show("Değişken : " + i.ToString() + " \n " + liste[i]); liste.Remove(liste[i]); } else { MessageBox.Show("Liste boş!"); }
Yerinde olsam direk kopyalayarak kullanmam. Biraz üstünde oyna TRY-Catch ekle mesaj kutularını geliştir vs. kendinden bir şeyler ekle ki tam puan alasın.
Öncelikle burada ki amacım yardımcı olmak. Daha bu kodu nereye ekleyeceğini bilmeyen bir insana yardımcı olup iyi not almasını kesinlikle istemem. Ondan sonra kalkıp eğitim sistemini kendimiz eleştiriyoruz. Benim size bu kadarını söylemem bile fazla, eğer bu bölümü okuyorsanız lütfen biraz çaba gösterip laiği ile yapın.Tam olarak hangi kodu nereye yazacağımızı söyleyebilir misiniz?