اذهب إلى المحتوى

عبد الرزاق القرن

الأعضاء
  • المساهمات

    22
  • تاريخ الانضمام

  • تاريخ آخر زيارة

إجابات الأسئلة

  1. إجابة عبد الرزاق القرن سؤال في ما الفرق بين ExecuteReader و ExecuteNonQuery في تقنية ADO.net ؟ كانت الإجابة المقبولة   
    عندما نؤسّس اتصالاً بقاعدة البيانات فإننا نُمرّر استعلاماً ما ونفتح الاتصال، لذا يتوجب علينا تحديد طريقة تنفيذ الأمر.
    هناك عدّة طرق لتنفيذ هذه الأوامر ويتم استخدام الطريقة المناسبة للأمر الذي يحوي الاستعلام.
    الأوامر هي :
    • ExecuteReader : يستخدم عند تمرير استعلام يجلب أكثر من سجل من قاعدة البيانات ويتم تعريف DataReader لقراءة هذه السجلات والتعامل معها.
    string queryString = "SELECT * FROM table";        SqlCommand command = new SqlCommand(queryString, connection); connection.Open(); SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection); while (reader.Read()) { Console.WriteLine(String.Format("{0}", reader[0])); }• ExecuteNonQuery : يُستخدم عند تمرير استعلام لتعديل البيانات من إضافة إلى حذف أو تعديل وبذلك لا توجد بيانات مُعادة من قاعدة البيانات.
            string queryString = "UPDATE table SET column='value' WHERE id=5";         SqlCommand command = new SqlCommand(queryString, connection); connection.Open(); SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection); while (reader.Read()) { Console.WriteLine(String.Format("{0}", reader[0])); }• ExecuteScalar : يستخدم عند تمرير استعلام يجلب قيمة واحدة من قاعدة البيانات.
    string queryString = "SELECT COUNT(*) FROM table";        SqlCommand command = new SqlCommand(queryString, connection); connection.Open(); int count = command.ExecuteScalar(); Console.WriteLine("Count is : " + count);
    ويوجد أيضاً :
    • ExecuteXmlReader : يستخدم لتنفيذ الاستعلام وإعادته على شكل XML حيث يتم تعريف XmlReader وربط الناتج به لقراءته.

    المصدر SqlCommand Methods .
  2. إجابة عبد الرزاق القرن سؤال في ما هي الدّالة "DateAdd" و كيف يمكن استخدامها في SQL Server ؟ كانت الإجابة المقبولة   
    الدالة "DateAdd" تُضيف قيمة رقمية إلى حقل من نوع تاريخ كإضافة بعض الأيام و الشهور و السنوات إلى تاريخ معين.
    صيغة الدالة كما يلي:
    DATEADD(Part_of_date, number, date) • المُعامل الأول Part_of_date يأخذ إحدى القيم الثلاثة:
          Year : لإجراء الإضافة على الجزء الخاص بالسنوات.
          Month : لإجراء الإضافة على الجزء الخاص بالشهور.
          Day: لإجراء الإضافة على الجزء الخاص بالأيام.
    • المعامل الثاني number يأخذ القيمة الرقمية المراد إضافتها.
    • المعامل الثالث date هو الحقل أو القيمة التاريخية المراد إجراء الإضافة إليها.

    مثال عن الدالة, استعلام يجلب لي الاسم الكامل للموظف وتاريخ العمل وتاريخ العمل مضافاً له 3 سنوات :
    SELECT FullName, Date_of_working as 'Date of working', DATEADD(year,3,Date_of_working) as 'Using DATADD' FROM Employee;
     للمزيد حول الدالة DATEADD .
  3. إجابة عبد الرزاق القرن سؤال في كيف أُغيّر لون النص ضمن Label في C# ؟ كانت الإجابة المقبولة   
    بإمكانك ترك الخيار للمستخدم في اختيار اللون للنص الذي يظهر له ضمن Label.
    الطريقة كالتالي :
    • نبني غرضّ من صف ColorDialog :
    ColorDialog MyDialog = new ColorDialog();
    • نحدّد العنصر الذي سنُطبق اللون عليه وما إذا كان اللون سُيطبق على الخلفية أم على النص :
    MyDialog.Color = label1.ForeColor ;
    • أخيرًا وبعد اختيار المستخدم اللون نضع شرطاً نختبر بهِ فيما إذا استمر باختيار اللون أو ألغى العملية :
    if(MyDialog.ShowDialog() == DialogResult.OK) textBox1.ForeColor = MyDialog.Color;
    ملاحظة : الأوامر السابقة جميعها نضعها ضمن الطريقة المعالجة لحدث النقر على زر اختيار اللون.
    لتصبح كامل الأوامر كالتالي :
    private void button1_Click(object sender, EventArgs e) {     ColorDialog MyDialog = new ColorDialog(); MyDialog.Color = label1.ForeColor ; if (MyDialog.ShowDialog() == DialogResult.OK) textBox1.ForeColor = MyDialog.Color; }
    المصدر.
  4. إجابة عبد الرزاق القرن سؤال في ماهي طريقة إنشاء عدّاد في C# ؟ كانت الإجابة المقبولة   
    لإنشاء عدّاد يجب عليك اتباع الخطوات التالية :
    • من صندوق الأدوات أنشئ عنصر Button وعنصر  TextBox وعنصر Label.
    • من صندوق الأدوات قم بإنشاء Timer واضبط من خصائصه الـ Interval للقيمة 1000.
    • انقر نقرتين على العنصر Timer لتوليد الطريقة المُعالجة لحدث Tick.
    • في الطريقة المعالجة لحدث Tick اكتب الأوامر الخاصّة بالعداد وشريط التقدم وهي:
    int first_time = int.Parse(textBox1.Text); // تخزين الوقت الكلي للعداد int percentage; // متحول لتخزين النسبة المئوية للعداد if (time > 0) { label1.Text = "Remained : " + time; // طباعة الوقت المتبقي من العداد percentage = time * 100 / first_time; // معادلة تحسب النسبة المئوية للوقت المتبقي progressBar1.Value = percentage; // تعديل قيمة شريط المعالجة إلى النسبة المئوية للوقت المتبقي time -= 1; // إنقاص عداد الوقت ثانية } else if (time == 0) { timer1.Stop(); // إيقاف العداد progressBar1.Value = 0; label1.Text = "Finished"; MessageBox.Show("انتهى العدّاد"); } else { timer1.Stop(); MessageBox.Show("يرجى إدخال قيمة رقميّة موجبة"); }
    • ضمن الطريقة المُعالجة لحدث النقر على زر بدء العداد اكتب الأوامرالتالية :
    time = int.Parse(textBox1.Text); timer1.Start(); // بدء العداد
    • قم بتعريف متحول عام ضمن الصف لقيمة العداد :
    int time; 
    ليصبح كامل الكود هو :
    namespace WindowsFormsApplication2 { public partial class Form1 : Form {         public Form1() { InitializeComponent(); } int time; private void button1_Click(object sender, EventArgs e) { time = int.Parse(textBox1.Text); timer1.Start(); } private void timer1_Tick(object sender, EventArgs e) { int first_time = int.Parse(textBox1.Text); int avg; if (time > 0) { label1.Text = "Remained : " + time; avg = time * 100 / first_time; progressBar1.Value = avg; time -= 1; } else if (time == 0) { timer1.Stop(); progressBar1.Value = 0; label1.Text = "Finished"; MessageBox.Show("انتهى العدّاد"); } else { timer1.Stop(); MessageBox.Show("يرجى إدخال قيمة رقميّة موجبة"); } } } } 
  5. إجابة عبد الرزاق القرن سؤال في ما هي طريقة إنشاء ساعة في برنامجي C# ؟ كانت الإجابة المقبولة   
    لإنشاء ساعة يجب عليك اتباع التالي :
    1- أنشئ Label لنضع به الوقت واضبط خصائصه كما ترغب.
    2- من الـ ToolBox أدرج الأداة Timer.

    3- من خصائص الأداة اضّبط الخيارات الموضّحة في الصورة وفق الآتي :
    Enabled : True
    Interval : 1000


    4- الآن انقر نقرتين على الأداة Timer كما هو موضّح في الصورة لينشئ البرنامج الطريقة المُعالجة للحدث Tick.

     
    5- سنستعين بالأوامر التي تُعيد لنا الوقت وهي :
    DateTime.Now.Hour // لجلب الساعة الحالية DateTime.Now.Minute // لجلب الدقيقة الحالية DateTime.Now.Second // لجلب الثانية الحالية
    6- ضمن الطريقة المُعالجة للحدث Tick نُدرج الأوامر التي سيُكرر تنفيذها وفق المدة التي حددّناها في الـ Interval وهي :
    label1.Text = DateTime.Now.Hour + ":" + DateTime.Now.Minute + ":" + DateTme.Now.Second;
    7- بعد تنفيذ البرنامج ستظهر الساعة ضمن الـ ListBox وفق التنسيق التالي H:M:S .

    المزيد.
  6. إجابة عبد الرزاق القرن سؤال في كيف أبرمج زر لفتح نافذة اختيار ملف من جهاز المستخدم بلغة C#؟ كانت الإجابة المقبولة   
    تستطيع إنجاز ذلك عبر الصف الخاص بنافذة فتح ملف "OpenFileDialog" من خلال اتباع الخطوات التالية :
    1- بناء غرض من هذا الصف.
    2- تحديد الخصائص التي نريدها للنافذة.
    3- إضافة شرط للتحقق من فتح النافذة واختيار ملف.
    الأوامر التي تحتاجها هي :
    OpenFileDialog ofd = new OpenFileDialog(); // بناء غرض /* خصائص النافذة */ ofd.Filter = "Pictures (*.jpg)|*.jpg"; // أنواع الملفات التي نستطيع مشاهدتها واختيارها ofd.Title = "Chose a picture"; // عنّوان النافذة if (ofd.ShowDialog() == DialogResult.OK) // التحقق من اتمام عملية اختيار الملف { string path = ofd.FileName; // الاوامر التي تريد تنفيذها بعد اختيار الملف }ويمكنك أيضاً إضافة خصائص ثانوية لنافذة فتح الملف مثل :
    ofd.InitialDirectory = "C:\\"; // لتحديد المسار الافتراضي للنافذة عند فتحها ofd.FileName = "summer.jpg"; // لتعيين اسم افتراضي للملف عند فتح النافذة للمزيد حول نافذة فتح ملف [ OpenFileDialog Class ] .
  7. إجابة عبد الرزاق القرن سؤال في كيف أبدّل بين النماذج Forms في C# ؟ كانت الإجابة المقبولة   
    - للتنقل بين النماذج يجب عليك القيام بالتالي :
    1- بناء غرض من صف النموذج الذي تريد الانتقال إليه.
    2- استدعاء الطريقة show لعرض النموذج الجديد.
    3- استدعاء الطريقة hide لاخفاء النموذح الحالي.
    - يوجد في مشروعك 3 نماذج, سيكون العمل كالتالي :
    • ضمن النموذج الأول :
    إذا أردت الانتقال إلى النموذج الثاني اكتب الكود التالي في الطريقة المُعالجة لحدث النقر على الزر الذي ترغبه للانتقال :
    Form2 f2=new Form2(); f2.show(); this.hide(); • ضمن النموذج الثاني :
    إذا أردت الانتقال إلى النموذج الثالث اكتب الكود التالي في الطريقة المُعالجة لحدث النقر على الزر الذي ترغبه للانتقال :
    Form3 f3=new Form3(); f3.show(); this.hide(); إذا أردت الرجوع إلى النموذج الأول اكتب الكود التالي في الطريقة المُعالجة لحدث النقر على الزر الذي ترغبه للانتقال :
    Form1 f1=new Form1(); f1.show(); this.hide(); • ضمن النموذج الثالث :
    إذا أردت الرجوع إلى النموذج الثاني اكتب الكود التالي في الطريقة المُعالجة لحدث النقر على الزر الذي ترغبه للانتقال :
    Form2 f2=new Form2(); f2.show(); this.hide();  << المصدر [  Display One Form from Another]
  8. إجابة عبد الرزاق القرن سؤال في ما هي المتغيرات Float و Double في C# ؟ كانت الإجابة المقبولة   
    هي متغيّرات تستطيع من خلالها تخزين الارقام العشرية مثل 5.16 .
    - تعريفات :
    • المتغير "Float" هو متغير رقمي لا يقبل نصوص و يقبل الفواصل العشرية, يتسع لسبعة خانات بعد الفاصلة و لابدَّ من وضع الحرف F في نهاية القيمة المعطاة للمتغير.
    • المتغير "Double" هو متغير رقمي لا يقبل نصوص و يقبل الفواصل العشرية, يتسع لـ 15 أو 16 خانة بعد الفاصلة.

    - الحجم في الذاكرة :
    • المتغير float من  10³⁸ × 3.4-  إلى  10³⁸ × 3.4+
    • المتغير double من   ³²⁴⁻10 × 5.0±  إلى  10³⁰⁸ × 1.7±

    - طريقة تعريف المتحول :
    • المتغير من نمط float :
    float x = 3.5f;
    • المتغير من نمط double :
    double x = 5.7; 
    - ملاحظات :
    • في المتحول من نمط float يتم إرفاق القيمة بالحرف f لتمييزها عن القيمة من نمط double.
    • نستطيع تخزين ضمن المتحولين float و double قيم عددية مثل 45 وقيم عشرية مثل 45.3 بينما المتحول int يخزّن فقط قيم عددية ويهمل ما بعد الفاصلة.
     << المصادر [ Double | Float ]
     
  9. إجابة عبد الرزاق القرن سؤال في ما هي الجملة الشرطية Switch في "#C"؟ كانت الإجابة المقبولة   
    تختبر switch الشرط بناءً على عددٍ من الحالات تُسمى Case.
    كل حالة لها جواب للشرط , إذا وافقت الشرط فيتم تنفيذ الأوامر التي تحتويها.
    تشبه switch الجملة الشرطية if , ولكن كل switch تتحقق من قيم متحول واحد (مثل متحول num في المثال اللاحق).
    نستفيد من switch عند وجود جمل شرطية متداخلة لكونها تختصر الكثير من التعقيد فيما لو استخدمنا الجملة الشرطية if.
    طريقة صياغتها كالتالي :
    int num = int.Parse(Console.ReadLine()); switch (num) { case 1: Console.WriteLine("First"); break; case 2: Console.WriteLine("Second"); break; case 3: Console.WriteLine("Third"); break; default: Console.WriteLine(num + "th"); break; }أدرجنا المتحول num ضمن قَوسي switch وهو المتحول الذي نريد اختبار قيمته.
    بجانب كل حالة case أدرجنا جواباً للشرط (قيمة).
    عند التنفيذ وبعد الدخول إلى switch سيمر على أول حالة case.
    إن كانت قيمة المتحول num تساوي لقيمة الحالة case سيتم تنفيذ الأوامر المُحتواة ضمن هذه الحالة case والتوقف عند break ثم الخروج من switch.
    وفي حال تم المرور على جميع الحالات case ولم تحققها فسيتم تنفيذ الأوامر المُحتوات ضمن default إن وُجدت.
    >> للمزيد حول Switch  .
     
  10. إجابة عبد الرزاق القرن سؤال في ما فائدة المصفوفات في #C وكيف يتم تعريفها؟ كانت الإجابة المقبولة   
    كما نعلم "المتحول" هو خانة في الذاكرة يتم حجزها لتخزين قيمة واحدة مثل تخزين المعدل الدراسي لطالب ما.
    ولكن ماذا أفعل إذا رغبت بتخزين درجات 14 مقرّر لطالب ما؟ هل أنشئ 14 متحول!
    طبعا لا, فمن الأفضل في هذه الحالة استخدام المصفوفات.
    المصفوفات هي مجموعة متسلسلة من خانات الذاكرة تحمل الاسم والنمط ذاته.
    وبما أن للخانات الاسم نفسه فنحتاج إلى تعداد نميّز به الخانات وهو ما يسمى بالفهرس "index".
    لكل مصفوفة فهرس رقمي خاص بها يبدأ من الصفر ويشير إلى خانة ما في الذاكرة.
    ونستطيع في كل خانة تخزين قيمة منفصلة عن قيمة خانة أُخرى.
     
    • يتم تعريف المصفوفة على الشكل التالي :
    DataType[] ArrayName = new DataType[LengthArray]; int[] grades = new int[3]; - DataType : هو نمط البيانات التي نريد تخزينها ضمن المصفوفة (لا يمكننا تخزين أكثر من نمط بيانات ضمن المصفوفة الواحدة).
    - ArrayName : اسم المصفوفة.
    - LengthArray : طول المصفوفة, وهو عدد القيم الأعظمي الذي نستطيع تخزينه ضمن هذه المصفوفة.
     
    • ولاسناد قيم لهذه المصفوفة  :
    grades[0] = 75; grades[1] = 40; grades[2] = 88; أدرجنا اسم المصفوفة ثم بين قوسي مربع أدرجنا الفهرس لهذا العنصر من المصفوفة ثم أسندنا قيمة لهذا العنصر.
    بالتالي العنصر الاول للمصفوفة يحمل الفهرس رقم 0 والعنصر الثاني للمصفوفة يحمل الفهرس رقم 1 والعنصر الثالث للمصفوفة يحمل رقم الفهرس 2 وهكذا ..
    • توجد طريقة أُخرى مختصرة وهي اعطاء قيم للمصفوفة عند تعريفها, كالتالي :
    int[] grades = new int[3] {75,40,88} ; • ولاعادة قيمة عنصر ما ضمن مصفوفة نكتب اسم المصفوفة ثم رقم الفهرس ضمن قوسي مربع كالتالي :
    Console.WriteLine( grades[0] ); للمزيد حول المصفوفات  [Array Tutorial]
  11. إجابة عبد الرزاق القرن سؤال في كيف أولّد أرقام عشوائية في C#؟ كانت الإجابة المقبولة   
    وعليكم السلام
    يوجد صف يسمى Random Class يحوي على عدّة طرائق تستطيع عبرها توليد أرقام عشوائية وفق عدّة تخصيصات وهي :
    • الطريقة Next بدون بارمترات تستطيع عبرها توليد أرقام عشوائية أكبر أو تساوي الصفر بعدد خانات غير محدود , مثال :
    Random r = new Random(); int hsoub = r.Next(); // ex: return 251487516  
    • الطريقة Next مع بارمتر واحد تستطيع عبرها توليد أرقام عشوائية أكبر أو تساوي الصفر وتنتهي عند الرقم المُحدد ضمن البارمتر , مثال :
    Random r = new Random(); int hsoub = r.Next(50); // ex: return 23 
    • الطريقة Next مع بارمترين تستطيع عبرها توليد أرقام عشوائية أكبر أو تساوي الصفر تبدأ عند الرقم المُحدد ضمن البارمتر الأول وتنتهي عند الرقم المُحدد ضمن البارمتر الثاني , مثال :
    Random r=new Random(); int hsoub = r.Next(100,500); ex: return 400 
    • الطريقة NextDouble بدون بارمترات تستطيع عبرها توليد أرقام عشوائية أكبر تماماً من الصفر وأصغر تماماً من الواحد بعدد خانات عشرية غير محدود , مثال :
    Random r=new Random(); int hsoub = r.NextDouble(); ex: return 0.265478513259841لمصدر : [Random Class]
  12. إجابة عبد الرزاق القرن سؤال في مشكلة في إسناد قيمة إلى حقل نصي C#، ما الحل؟ كانت الإجابة المقبولة   
    الكود من ناحية الـ Syntax صحيح ولكن عملياً أنت تضع قيمة textBox2 إلى جانب قيمة textBox1
    لو افترضنا ان قيمة textBox2 تساوي 5 وقيمة textBox1 تساوي أيضاً 5 ستكون قيمة textBox3 هي 55
    السبب أن نمط العنصر textBox هو string وبالتالي القيمة التي تُخزن ضمنه من نمط string
    وعند تحويل رقم من نمط int إلى نمط string سيُعامل الرقم معاملة الحرف فإذا تم جمعهُ مع رقمٍ آخر من نمط string سيكون الناتج هو الرّقمين بجانب بعضهم
    ولحل هذه المشكلة قم بتحويل القيم الرقمية التي تريد جمعها إلى نمط int عبر الكود التالي :
    Convert.ToInt32(textBox2.Text) + Convert.ToInt32(textBox1.Text)بعد هذه الخطوة قم بإسناد قيمة الجمع إلى عنصر textBox3 ولكن انتبه يجب عليك ارجاع نمط الناتج من int إلى string حتى تسطيع اسناده
    ليصبح كامل الكود هو :
    textBox3.Text = Convert.ToString (Convert.ToInt32(textBox2.Text) + Convert.ToInt32(textBox1.Text)); 
×
×
  • أضف...