Son Görünüm :
Geçen ki günden sonra sadece söylenilen yol üzerinde tekrardan sil baştan araştırma ve denemeler yaptım. Son hali ise yukarıda. Sanırım eksik oldu gibi ve çok düzensizleşti.
Nasıl düzeltebilirim ?
Ayrıca menüler arasında satır boşlukları bırakmak ve tek hizada olmasını sağlayamadım.
Nasıl sağlayabilirim ?
Vede bir şey fark ettim menülerin yan yana olması için "console.writeLine" olarak tanımlamıştım fakat konum için tanımladığım bu kodlardan sonra alt alt olacak şekilde bir düzen aldı.
Yardımcı olabilirmisiniz lütfen ?
Menü için yazdığım tüm kodlar :
public static void notlar()
{
Console.Title = "N O T L A R I M";
Console.OutputEncoding = Encoding.GetEncoding("ibm857");
//Dizi tanımlama işlemi ile menü oluşturmak
string[] dizi_menuler = new string[] { "C # CONSOLE KODLAMA \t", "C # NESNEL KODLAMA \t", "Çıkış" };
Console.WriteLine(dizi_menuler[0]);
Console.WriteLine(dizi_menuler[1]);
Console.WriteLine(dizi_menuler[2]);
foreach (string menu in dizi_menuler)
{
//Dizi tanımlayarak oluşturulan "dizi_menü"'nü , List<>' te aktaralım.
List<string> list_menuler = new List<string>(dizi_menuler);
Console.CursorVisible = false;//Aktif olan imlecin görünüz özelliğini kapat. Böylece imleç gizli kalacaktır.
while (true)/*Bu döngü ile döngü şartlarının doğru olup olmadığını kontrol etmeden döngünün çalıştırılamsına
izin verir ve döngü şatları uyumlu olduğu sürece çalışır */
{
Console.Clear();
/*Eğer ki burada ki sayfa temizleme komutu aktif olur ise tıklama sonucunda açılacak olan sayfalarında görüntülenmesini engeller*/
string secili_oge;
secili_oge = menuler(list_menuler);
if (secili_oge == "C # CONSOLE KODLAMA")
{
Konu_Console.Console_dersi();
}
else if (secili_oge == "C # NESNEL KODLAMA")
{
// Console.Clear();
Konu_Nesnel.Nesnel_dersi();
}
else if (secili_oge == "Çıkış")
{
Environment.Exit(0);
}
}
}
}
private static string menuler(List<string> list_menu)
{
for (int i = 0; i < list_menu.Count; i++)
{
//---------------------------------------------------------------------------------------------
//--------------------- SAYFADA YER ALAN MENÜLERİN KONUMLARINI AYARLAR-------------------------
Console.CursorTop = i + 5;
Console.CursorLeft = i + 5;
//-----------------------------------------OR
// Console.SetCursorPosition(i + 5, i + 5);
//-----------------------------------------------------------------------------------
if (i == index)
{
Console.BackgroundColor = ConsoleColor.Red;
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine(list_menu);
}
else
{
Console.WriteLine(list_menu);
}
Console.ResetColor();
}
ConsoleKeyInfo basilantus;
basilantus = Console.ReadKey();
if (basilantus.Key == ConsoleKey.UpArrow)
{
if (index <= 0)
{
}
else
{
index--;
}
}
else if (basilantus.Key == ConsoleKey.DownArrow)
{
if (index == list_menu.Count - 1)
{
}
else
{
index++;
}
}
else if (basilantus.Key == ConsoleKey.Enter)
{
return list_menu[index];
}
else if (basilantus.Key != ConsoleKey.RightArrow || basilantus.Key != ConsoleKey.LeftArrow || basilantus.Key != ConsoleKey.Enter)
{//Kullanıcı basılması istenen tuşlar dışında işlem yapmasını engel olmak ya da programın hata vermesini önlemek.
Console.WriteLine("Hatalı bir tıklama işlemi !!!");
}
else
{
return "";
}
Console.Clear();
return "";
}
}
}
Geçen ki günden sonra sadece söylenilen yol üzerinde tekrardan sil baştan araştırma ve denemeler yaptım. Son hali ise yukarıda. Sanırım eksik oldu gibi ve çok düzensizleşti.
Nasıl düzeltebilirim ?
Ayrıca menüler arasında satır boşlukları bırakmak ve tek hizada olmasını sağlayamadım.
Nasıl sağlayabilirim ?
Vede bir şey fark ettim menülerin yan yana olması için "console.writeLine" olarak tanımlamıştım fakat konum için tanımladığım bu kodlardan sonra alt alt olacak şekilde bir düzen aldı.
Yardımcı olabilirmisiniz lütfen ?
Menü için yazdığım tüm kodlar :
public static void notlar()
{
Console.Title = "N O T L A R I M";
Console.OutputEncoding = Encoding.GetEncoding("ibm857");
//Dizi tanımlama işlemi ile menü oluşturmak
string[] dizi_menuler = new string[] { "C # CONSOLE KODLAMA \t", "C # NESNEL KODLAMA \t", "Çıkış" };
Console.WriteLine(dizi_menuler[0]);
Console.WriteLine(dizi_menuler[1]);
Console.WriteLine(dizi_menuler[2]);
foreach (string menu in dizi_menuler)
{
//Dizi tanımlayarak oluşturulan "dizi_menü"'nü , List<>' te aktaralım.
List<string> list_menuler = new List<string>(dizi_menuler);
Console.CursorVisible = false;//Aktif olan imlecin görünüz özelliğini kapat. Böylece imleç gizli kalacaktır.
while (true)/*Bu döngü ile döngü şartlarının doğru olup olmadığını kontrol etmeden döngünün çalıştırılamsına
izin verir ve döngü şatları uyumlu olduğu sürece çalışır */
{
Console.Clear();
/*Eğer ki burada ki sayfa temizleme komutu aktif olur ise tıklama sonucunda açılacak olan sayfalarında görüntülenmesini engeller*/
string secili_oge;
secili_oge = menuler(list_menuler);
if (secili_oge == "C # CONSOLE KODLAMA")
{
Konu_Console.Console_dersi();
}
else if (secili_oge == "C # NESNEL KODLAMA")
{
// Console.Clear();
Konu_Nesnel.Nesnel_dersi();
}
else if (secili_oge == "Çıkış")
{
Environment.Exit(0);
}
}
}
}
private static string menuler(List<string> list_menu)
{
for (int i = 0; i < list_menu.Count; i++)
{
//---------------------------------------------------------------------------------------------
//--------------------- SAYFADA YER ALAN MENÜLERİN KONUMLARINI AYARLAR-------------------------
Console.CursorTop = i + 5;
Console.CursorLeft = i + 5;
//-----------------------------------------OR
// Console.SetCursorPosition(i + 5, i + 5);
//-----------------------------------------------------------------------------------
if (i == index)
{
Console.BackgroundColor = ConsoleColor.Red;
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine(list_menu);
}
else
{
Console.WriteLine(list_menu);
}
Console.ResetColor();
}
ConsoleKeyInfo basilantus;
basilantus = Console.ReadKey();
if (basilantus.Key == ConsoleKey.UpArrow)
{
if (index <= 0)
{
}
else
{
index--;
}
}
else if (basilantus.Key == ConsoleKey.DownArrow)
{
if (index == list_menu.Count - 1)
{
}
else
{
index++;
}
}
else if (basilantus.Key == ConsoleKey.Enter)
{
return list_menu[index];
}
else if (basilantus.Key != ConsoleKey.RightArrow || basilantus.Key != ConsoleKey.LeftArrow || basilantus.Key != ConsoleKey.Enter)
{//Kullanıcı basılması istenen tuşlar dışında işlem yapmasını engel olmak ya da programın hata vermesini önlemek.
Console.WriteLine("Hatalı bir tıklama işlemi !!!");
}
else
{
return "";
}
Console.Clear();
return "";
}
}
}