„Sznikák példakódok” változatai közötti eltérés

A VIK Wikiből
Kiskoza (vitalap | szerkesztései)
DrawString
Kiskoza (vitalap | szerkesztései)
Háttérszál
192. sor: 192. sor:
     base.OnPaint(e);
     base.OnPaint(e);
  }
  }
{{Infobox
| cím = Háttérszál
| háttérszín = #C0ffee
| keretszín = black
| tartalom =
Írjon programot, ami egy háttérszálban egy perc alatt aszámol 1-zől 60-ig és az aktuális értéket kiírja a konzolra
{{Infobox-táblázat|
{{Infobox-táblázatsor|A kód nyelve|C#}}
}}
}}
public class Program
{
    public void static Main(string[] args)
    {
      Thread t = new Thread(Szamol);
      t.IsBackground = true;
      t.Start();
    }
    public void static Szamol()
    {
      private static int szam = 0;
      if(szam < 60)
      {
          Sleep(1000);
          szam++;
          Console.WriteLine("A számláló értéke: {0}",szam.ToString());
      }
    }
}


[[Kategória:Infoalap]]
[[Kategória:Infoalap]]

A lap 2013. május 28., 12:49-kori változata


Az oldal épp egy nagyobb változáson megy keresztül, kérlek nézz vissza kicsit később


Szál indítása

Mutasson kódrészletet szál indítására

A kód nyelve
C#
class ThreadTestClass
{ 
   public static void Main(string[] args) 
   { 
      Thread t = null; 
      if (args.Length == 0) 
      { 
         t = new Thread(new ThreadStart(ThreadMethod1)); 
         t.Start(); 
      } 
      else 
      { 
         t = new Thread(new ParameterizedThreadStart(ThreadMethod2)); 
         t.Start(args[0]); 
      }
   }
 
   public static void ThreadMethod1() 
   { 
      Console.WriteLine("Thread without parameter."); 
   } 

   public static void ThreadMethod2(object param) 
   { 
      Console.WriteLine("Thread with parameter: {0}", param.ToString()); 
   } 
}


Kapcsolatalapú hozzáférés

Ismertesse egy rövid C# példán keresztül az ADO.NET kapcsolatalapú adathozzáférést

A kód nyelve
C#
SqlConnection conn = null; 
try 
{ 
   // Kapcsolódás azadatbázishoz 
   conn = new SqlConnection(@"Data Source=LAPTOP\SQLEXPRESS;InitialCatalog=Northwind;Integrated Security=True"); 
   // A kapcsolat megnyitása 
   conn.Open(); 
   // Az adatbázis parancs létrehozása 
   SqlCommand command = new SqlCommand("SELECT ShipperID, CompanyName, Phone FROM Shippers"); 
   // Adatbázis kapcsolat megadása
   command.Connection = conn; 
   Console.WriteLine("{0,0}{1,15}{2,15}", "ShipperID", "CompanyName", "Phone"); 
   Console.WriteLine("-----------------------------------------------------------------"); 
   // Az adatok lekérdezése és kiiratása 
   using (SqlDataReader reader = command.ExecuteReader()) 
   { 
      while (reader.Read()) 
      Console.WriteLine("{0,4}{1,20}{2,20}", 
                          reader["ShipperID"].ToString(),
                          reader["CompanyName"].ToString(), 
                          reader["Phone"].ToString()); 
   } 
} 
catch (Exception ex) 
{
   // Kivétel szövegének kiiratása 
   Console.WriteLine(ex.Message); 
} 
finally 
{ 
   // Az adatbázis kapcsolat lezárása, ha meg lett nyitva 
   if((conn!=null)&&(conn.State==System.Data.ConnectionState.Open)) 
      conn.Close(); 
}


Eseménykezelés

Írj egy Form alapú programot, ami MessageBox-ban megjeleníti a leütött billentyűt!

A kód nyelve
C#
public partial class MainForm : Form
{
   public MainForm()
   {
      InitializeComponent();
      this.KeyDown += new KeyEventHandler(this.MainForm_KeyDown);
   }

   protected override void OnKeyDown(KeyEventArgs e)
   {
      // Meghívjuk az eredeti függvényt is
      base.OnKeyDown(e);
      MessageBox.Show("A billentyű (virt. fv.): " + e.KeyCode.ToString());
   }

   private void MainForm_KeyDown(object sender, KeyEventArgs e)
   {
      MessageBox.Show("A billentyű (eseménykez.): " + e.KeyCode.ToString());
   }
}


Négyzet rajzolás

Írjon olyan C# nyelvű alkalmazásrészletet, amely a (10,20) koordinátában megjelenít egy közepesen szürke színnel kitöltött 10 pixel hosszúságú négyzetet. A négyzet színe minden "r" bilentyű megnyomására legyen egyre sötétebb. A megjelenítés DGI-re épüljön.

A kód nyelve
C#
public partial class Form1 : Form
{
   private Brush brush1;
   private int grey = 200;

   public Form1()
   {
      InitializeComponent();
   }

   protected override void OnKeyDown(KeyEventArgs e)
   {
      base.OnKeyDown(e);
      if(e.KeyCode == Keys.R) {
         if(grey == 0) // ha elértük a színtartomány végét
            grey = 200;
         grey -= 10;
         Invalidate();
      }
   }

   protected override void OnPaint(PaintEventArgs e)
   {
      base.OnPaint(e);
      using (brush1 = new SolidBrush(ConsoleColor.FromArgb(grey, grey, grey)))
      {
         e.Graphics.FillRectrangle(brush1, 10, 20, 10+10, 20+10);
      }
   }
}


String rajzolás

Írjon olyan C# nyelvű alkalmazásrészletet, ami a (20,20) kokrdinátában megjeleníti, hogy a legutóbbi egérkattintás óta hány másodperc telt el! A megjelenítés GDI-re épüljön.

A kód nyelve
C#
DateTime lastClick;
String strDeltaTime;

private void Form1_Load(object sender, EventArgs e)
{
   lastClick = DateTime.Now;
   strDeltaTime = "0";
}

private void Form1_MouseClick(object sender, MouseEventArgs e)
{
   TimeSpan deltaTime = DateTime.Now.Subtract(lastClick);
   lastClick = DateTime.Now;
   strDeltaTime = deltaTime.Seconds.ToString();
   Invalidate(); // érvényteleníteni kell az ablak területet, hogy az új érték látszódjon
}

protected override void OnPaint(PaintEventArgs e) {
   e.Graphics.DrawString(strDeltaTime, this.Font, new SolidBrush(Color.Black), 20, 20);
   base.OnPaint(e);
}


Háttérszál

Írjon programot, ami egy háttérszálban egy perc alatt aszámol 1-zől 60-ig és az aktuális értéket kiírja a konzolra

A kód nyelve
C#
public class Program
{
   public void static Main(string[] args)
   {
      Thread t = new Thread(Szamol);
      t.IsBackground = true;
      t.Start();
   }

   public void static Szamol()
   {
      private static int szam = 0;
      if(szam < 60)
      {
         Sleep(1000);
         szam++;
         Console.WriteLine("A számláló értéke: {0}",szam.ToString());
      }
   }
}