C# Console'da menü konumunu nasıl ayarlayabilirim?

kılıç_46

Centipat
Katılım
16 Ekim 2022
Mesajlar
38
Daha fazla  
Cinsiyet
Erkek
Menü görünümü: Yasak olması sebebi ile görsel bir resim yüklemesi yapamadım.

Daha önce iki farklı projeler arası bağlantı konusunu sormuştum ve artık onu C# Console ile class library yardımı ile uygulamayı yaptım. Ama bu sefer bu tür de ki menülerde konum belirleyemiyorum. Yani demek istediğim menüleri sayfanın ortalarında ya da herhangi bir yerinde olmasını nasıl sağlarım? Yardımcı olabilir misiniz?

Menü için yazmış olduğum kodlar.

Kod:
namespace Konular
{
    public class Class1
    {
        static int index = 0;

        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]);



        
            List<string> list_menuler = new List<string>(dizi_menuler);


            Console.CursorVisible = false;

            while (true)
            {
                Console.Clear();
            

                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++)
            {
                if (i == index)
                {
                    Console.BackgroundColor = ConsoleColor.Red;
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.Write(list_menu);
                }
                else
                {
                    Console.Write(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)
            {
                Console.WriteLine("Hatalı bir tıklama işlemi !!!");
            }
            else
            {
                return "";
            }
            Console.Clear();
            return "";
        }

    }
}
 
C#:
string str = "Merhabalar";
Console.WriteLine(String.Format("{0," + ((Console.WindowWidth / 2) + (str.Length / 2)) + "}", str));

Bu şekilde Console ekranına göre yazıyı ortaya hizalar.

İlgilendiğin için teşekkür ederim ama bunu kod içerisine yerleştirdiğimde

while (true)
{
Console.Clear();

Bu komudu kullandığım yer burası.

string secili_oge;

sadece bir satır alta inmekte.
Mümkün ise birazda açıklama yapabilir misin ?
 
Tam olarak yapmak istediğinizi anlamadım. Kodlarınızın hepsini atabilir misiniz?

Bu yaşadığım sorunun görsel olarak paylaştığım önceki sayfa link :
C# Console ile button ve solution nasıl düzenleyebilirim?
Girişmenü-1 adlı görselde tanımlamış olduğum kodlar ile menü çalışmamı sayfanın sol üst köşede değilde sayfanın ortalarında ya da herhangi bir yerine bırakmak istiyorum.
----------------------------------------------------------------------------------------------
**************Menü için tanımlamış olduğum kodlar*************

class Program
{
static int index = 0;

static void Main(string[] args)
{
Console.Title = "Menü çalşmaıs -5";
Console.OutputEncoding = Encoding.GetEncoding("ibm857");

//Dizi tanımlama işlemi ile menü oluşturmak
string[] dizi_menuler = new string[] { "Anasafa \t", "İletişim \t", "Kaynak \t", "Geri \t", "Çıkış" };
Console.WriteLine(dizi_menuler[0]);
Console.WriteLine(dizi_menuler[1]);
Console.WriteLine(dizi_menuler[2]);
Console.WriteLine(dizi_menuler[3]);
Console.WriteLine(dizi_menuler[4]);


//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 == "Anasafa")
{
Console.Clear();
Anasayfa.sayfa_1();

}
else if (secili_oge == "İletişim")
{
Console.Clear();

}
else if (secili_oge == "Kaynak")
{
Console.Clear();

}

else if (secili_oge == "Geri")
{
Console.Clear();

}
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++)
{
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 "";
}
}//---------------------------------------------------------------------------------------
}
 
Kendi kodunuz içerisinde yer alan Console.WriteLine() ve Console.Write() komtutlarını benim verdiğim komut ile birleştireceksiniz. Anlamyacak bir şey yok, gayet basit bir şekilde söylüyorum.

O kadar çok bilgi olmadığından sordum ikinci tekrarı, bilse idim zaten ikinci tekrar yaptırmam. Ama yine de ilginiz için teşekkür ederim.
 

Yeni konular

Geri
Yukarı