الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

دروس في البرمجه بلغة C#2005, تعلم خطوة بخطوة , مع الإجابة عن أي سؤال

مغلقرائج
بدأه حماة النهضة في 19 أبريل 2007 · 208 رد · 80,594 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#151

الدرس الخامس عشر

القوائم:

نادراً ما نجد برنامجاً يخلوا من القوائم Menus ..

والقوائم تنقسم إلى ثلاث أنواع :

1 - قوائم ريسية , وهي القوائم التي تأتي عادة أعلى النوافذ

كقائمة "ملف" و "تحرير" في أي نا فذة من نوافذ وندوز

image15-1.jpg

2 - قوائم فرعية Context Menu و هي القوائم التي تنبثق عادة عند النقر على زر الفأرة الأيمن

مثل قائمة التحرير في محررات النصوص

image15-2.JPG

3- قوائم شريط المهام وهي القوائم التي تنبثق من أيقونات البرامج الي لها إختصارات في شريط المهام

كقائمة المسنجر

image15-3.JPG

وطريقة التعامل مع القوائم بأنواعها المختلفة متشابهة جدا في معظم لغات البرمجة ومنها السي شارب

في درسنا اليوم سنضيف قائمة للتطبيق من النوع الثالث

حيث سنضيف إليها جميع وضائف الأزرار في النافذة الرئيسية

وسنضيف أيضاً خاصية إخفاء النافذة الرئيسية , وإضافة إيقونة للتطبيق في شريط المهام

إيقونة شريط المهام Notify Icon

وهي الإيقونات التي تظهر عادة في شريط المهام بجانب الساعة

مثل إيقونات المسنجر و الشبكة وغيرها

image15-4.JPG

إفتح نافذة التطبيق الرئيسية , وإسحب كائن إيقونة التنبية من صندوق الأدوات من جزء Components

image15-5.JPG

ستجد الإيقونة في الشريط الأصفر تحت النافذة , إخترها بالنقر عليها مرة واحدة بزر الفأرة الأيسر

image15-6.JPG

ثم إذهب إلى جدول الخصائص ومن خاصية Icon إختر الإيقونة المناسبة

وغير خاصية Text إلى "مشغل الصوت والفيديو"

وعند تشغيل التطبيق ستلاحظ إيقونة التحذير التي إخترتها موجودة في شريط المهام

image15-7.JPG

الآن سنضيف خاصية إخفاء النافذة للتطبيق وتعليمة إخفاء النافذة بسيطة جداً :

this.Hiade();

حيث أن this تمثل النافذة الحالية وهي النافذة الرئيسية

بقي أن نجد المكان المناسب لوضع تعليمة الإخفاء

وأفضل مكان لهذه التعليمة هي عند تصغير النافذة الرئيسية للبرنامج

حيث ستختفي النافذة من شريط المهام و لا يظهر منها سوى إيقوانة التنبية التي إخترناها

ولعمل ذلك يجب أن نكتب تعليمة الإخفاء في حدث Resize للنافذة , وهذا الحدث ينطلق عند تغيير حجم النافذة

ولكن هناك مشكلة , المفروض أن نخفي النافذة فقط عندما يتم تصغير النافذة , ولكن هذا الحدث ينطلف عند تصغير أو تكبير النافذة

وبالتالي فيجب أن نضيف جملة شرط if نختبر فيها حالة النافذة فإذا كانت النافذة مصغرة يتم تنفيذ كود الإخفاء

ونختبر حالة النافذة من خلال خاصية WindowsState من خصائص الكائن this والذي يمثل النافذة الرئيسية

فالتعليمة التالية ترجع قيمة تمثل حالة النافذة :

this.WindowState

ونتائج هذه الخاصية الشائعة هي ثلاث نتائج "حالات" :

1- الحالة العادية , وهي حالة تكون فيها النافذة بحجمها الأصلي كما في التصميم وترجع بقيمة :

FormWindowState.Normal

2- الحالة المكبرة , وهي حالة تكون فيها النافذة مكبرة ملئ الشاشة من زر التكبير في أعلى النافذة وترجع بقيمة :

FormWindowState.Maximized

3- الحالة المصغرة , وهي حالة تكون فيها النافذة مصغرة وموجودة فقط في شريط المهام وترجع بقيمة :

FormWindowState.Minimized

والحالة التي تهمنا هي آخر حالة , حيث سنختبر خاصية حالة النافذة WindowsState فإذا كانت Minimized فيتم تنفيذ كود الإخفاء

إذهب إلى نافذة التصميم , وإختر النافذة الرئيسية بالنقر مرة واحدة على مكان فارغ بالنافذة

ثم إذهب إلى جدول الخصائص جزء الأحداث , وأنقر مزدوجاً على حدث Resize

image15-8.JPG

ستنتقل إلى الكود , لنكتب هناك كود الإخفاء مع جملة if :

			if(this.WindowState == FormWindowState.Minimized)
			{
				this.Hide();
			}

السطر الأول يمثل جملة شرطية تختبر حالة النافذة إذا كانت مصغرة Minimized أم لا

فإذا كانت مصغرة يتم تنفيذ الكود بين الحاصرتين وهو تعليمة الإخفاء

إنتهينا من خاصية الإخفاء , بقي أن نضيف خاصية إعادة الإظهار

وتعليمة الإظهار بسيطة أيضاً , وقد ذركناها في دروس سابقة :

this.Show();

حيث أن this يمثل النافذة الرئيسية

ولكن هذا الكود لا يكفي فهو يظهر النافذة على شريط المهام , ولا يقوم بتكبيرها

وبالتالي يجب إضافة كود تكبير النافذة , وهو تغيير لحالة النافذة WindowsState إلى Maximized

أي أن تعليمة تكبير النافذة كاملة هي :

			this.WindowState = FormWindowState.Normal;

تعليمة الإظهار والتكبير سنضعها كما قلنا في حدث النقر المزدوج على إيقونة التنبية

إذهب إلى التصميم وأنقر مزدوجاً على إيقونة التحذير notifyIcon1 في الشريط الأصفر أسفل النافذة ستنتقل إلى الكود

أكتب هناك تعليمات الإظهار والتكبير :

			this.Show();
			this.WindowState = FormWindowState.Normal;

الآن شغل البرنامج وصغر النافذة , ستختفي النافذة من شريط المهام , وتبقى فقط إيقونة التحذير

وإذا نقرت عليها مزدوجاً ستظهر النافذة مرة أخرى .

القوائم الفرعية :

أحياناً نحتاج إلى التفاعل مع البرنامج وهو مخفي , كأن نوقف التشغيل مثلاً

في حالة البرنامج الحالية , يجب أولاً إظهار النافذة الرئيسية بالنقر مزدوجاً على إيقونة التحذير

ثم عندما تظهر النافذة نختر زر الإيقاف ..

يمكن إختصار هذا الإجراء بإضافة قائمة على إيقرنة التحذير , تحتوي على بند "إيقاف"

وبالتالي يمكن إيقاف التشغيل بدون إظهار النافذة الرئيسية

سنضيف إلى البرنامج كائن القائمة التي ستحتوي على جميع أوامر التطبيق

إذهب إلى التصميم , وإسحب كائن القائمة الفرعية من صندوق الأدوات :

image15-9.JPG

ستجد كائن القائمة أضيف إلى الشريط الأصفر أسفل النافذة

إختر القائمة بالنقر عليها مرة واحدة , ستلاحظ أن شكل النافذة الرئيسية تغير و أضيفت إليها قائمة تحت شريط العنوان

image15-10.JPG

هنا ستقوم بتحرير عناصر القائمة , ولإضافة عنصر جديد للقائمة أنقر مزدوجاً على المربع الأبيض الكتوب عليه Type Here

وأكتب هناك " إيقاف التشغيل "

image15-11.JPG

بهذا تكون قد أضفت عنصر جديد للقائمة وهو عنصر إيقاف التشغيل

أضف عنصر جديد تحت العنصر السابق وليكن " إنهاء البرنامج "

image15-12.JPG

الآن انقر في أي مكان فارغ في النافذة , ثم إخرت مرة أخري كائن القائمة من الشريط الأصفر في الأسفل

ولكن هذه المرة سنقوم بإضافة كود إلى كل عنصر من عناصر القائمة , إنقر مزدوجاً على عنصر " إيقاف التشغيل"

ستنتقل إلى الكود , لتكتب هناك تعليمة إيقاف التشغيل وهي نفس التعليمة في زر إيقاف التشغيل في النافذة الرئيسية من الدروس السابق :

			StopFile();

ثم إذهب إلى التصميم مرة أخرى و أنقر مزدوجاً على عنصر " إنهاء البرنامج"

وأكتب هناك كود إغلاق البرنامج الذي عرفناه من الدروس السابقة :

			System.Environment.Exit(0);

بقي أن نربط القائمة بإقونة التحذير , إذهب إلى التصميم و إختر إيقونة التحذير notifyIcon1 من الشريط الأصفر بالأسفل

ومن خاصية ContextMenuStrip إختر contextMenuStrip1

image15-13.JPG

الآن جرب تشغيل البرنامج , و صغر النافذة الرئيسية و أنقر بزر الفارة الأيمن على زر التحذير

ستظهر لك القائمة الفرعية

image15-14.JPG

الواجب

أضف عناصر أخري للقائمة تحتوي على جميع خصائص البرنامج

تشغيل , إيقاف مؤقت , تقديم , تأخير , فتح ملفات , التحكم بالألبومات , ملئ الشاشة, ....

.نهاية الدرس الخامس عشر .

..

إعذرونا , سنضطر للغياب فترة كبيرة

الأمر ليس بيدنا ...... فسامحونا

#152

السلام عليكم ورحمة الله وبركاتة

اشكركم على طرح هذا الموضوع الرائع وعلى جهودكم وجعله الله في ميزان حسناتكم وجعلكم حماة النهضه قولا وفعلا

اود ان اطرح سؤال وياريت القى اجابة عليه:

كيف يمكنني ان اعمل جلب لملف معين مثلا يكون عندي فورم اضغط على اي شي يظهر صندوق اختار منه ملف هذا الملف كله يسحب ويوضع داخل الفورم بعدين اعمل عليه عمليات برمجية مع العلم انني اعرف انه على

open dialog folder

نستطيع ان نعمل فتح واختيار ملف لكن ما اود معرفته كيف كل الملف اضعه داخل الفورم وقصدي هنا ليست قراءه للملف بل حمله ووضعه داخل الفورم بتمنى اتكون وضحت الصورة لكم واتردوا ع سؤالي ومشكورين بمل الاحوال

أحب الله جلا علاه ومن حبي له أخشاه

حياتي كلها لله

#153

طلع لي هالخطأ في واجب الدرس الثالث شو المشكلة ؟

untitled.JPG

تم تعديل هذه المشاركة بواسطة التميمية في 2 سبتمبر 2007 في 11:14

#154
اقتباس
طلع لي هالخطأ في واجب الدرس الثالث شو المشكلة ؟

لا توجد ";" في نهاية سطر ال for

#155

وعليكم السلام ورحمة الله وبركاته

Deep_Sea

أهلا بك أخي الكريم معنا smile.gif

بالنسبة لسؤالك لم أفهم ما الذي تقصد تماماً

الملف الذي تريد فتحه من أي نوع ؟ هل هو ملف نصي مثلاً او نوع آخر ؟

وهلا ضربت لنا مثال للتوضيح حتى نفهم ما المقصود بسؤالك ؟

ننتظرك أخي

..

تم تعديل هذه المشاركة بواسطة حماة النهضة في 2 سبتمبر 2007 في 18:24

إعذرونا , سنضطر للغياب فترة كبيرة

الأمر ليس بيدنا ...... فسامحونا

#156

الف شكر ع المرور الكريم وحاضر تكرم:

اول شي نوع الملفات اي نوع بشرط يتعامل مع نصوص فقط مثل

txt,ppt,pdf,doc

مثلا كما في ملفات الضغط نختار ملف للضغط وبعدين بنتفل للارشيف مابعرف اذا وضحت الصورة او لا لكن للتوضيح

بعد ما اختار الملف بكون عندي مثلا

textbox

يظهر هذا الملف فيه يارب اتكون الصورة واضحة وشكرا الكوا على كل شي وموفقين ان شاء الله

شكررررررررررررررررررررررررررررررررررررا

أحب الله جلا علاه ومن حبي له أخشاه

حياتي كلها لله

#157

الدرس السادس عشر

التوقيت:

من الإضافات المهمة للتطبيق إضافة طول الملف و الوقت الحالي للتشغيل بالدقيقة والثانية

ولإضافة ذلك نحتاج إلى إستخدام خاصية CurrentPosition في كائنات تشغيل الصوت والفيديو

أو GetPosition() في كائن تشغيل ملفات الريل

حيث ان هذه الخصائص ترجع قيمة من نوع رقم تحدد الثانية الحالية التي يتم تشغيلها في الملف

فمثلاً إذا اعادت الخاصية CurrentPosition القيمة 120 فمعنى هذا أنه يتم الآن تشغيل الثانية رقم 120 في الملف

وإذا أعادت الخاصية GetPosition() القيمة 50000 فمعنى ذلك أنه يتم الآن تشغيل الثانية رقم 50 في ملف الريل

وقد سبق وشرحنا أن الإختلاف بين كائنات تشغيل الصوت والفيديو وكائن تشغيل الريل هو أن الأولى ترجع القيمة بالثانية

أما كائن تشغيل الريل فيرجع القيمة بالملي ثانية و يجب قسمتها على 1000 كي نحولها إلى ثانية

الحصول على طول الملف :

هناك خاصية أخرى عرفناها في دروس سابقة وهو خاصية Duration في كائن مشغل الصوت والفيديو

والتي ترجع قيمة من نوع رقم تمثل طول الملف بالثواني

مثلاً التعليمة التالي :

ap.Duration

لو كان ناتجها 195 فهذا يعني أن طول الملف 195 ثانية

والتعليمة :

rp.GetLength()

لو كان ناتجها 195000 فهذا يعني أن طول الملف 195000 ملي ثانية أي 195 ثانية "بالقسمة على 1000"

لأن rp هو كائن مشغل ملفات الريل و يرجع القيمة بالملي ثانية لذلك وجب القسمة على 1000 لتحويلها إلى ثانية

ولكنا نريد كتابة الوقت بالدقيقية و الثانية

وعند تحويل 195 إلى دقائق تصبح ثلاث دقائق و 15 ثانية

أي بهذه الصيغة :

3:15

نحتاج إلى معادلة رياضية لتحويل الصيغة من ثواني إلى دقائق وثواني

إيجاد الدقائق :

لإيجاد الدقائق في كائن مشغلا الصوت أو الفيديو نقسم عدد الثواني على 60 ثم نحول الناتج إلى عدد صحيح حتى يتم إزالة الكسور العشرية

فمثلاً لو قيمنا 195 على 60 سيكون الناتج 3.25 و هو عدد حقيقي لكنا نريد فقط عدد الدقائق و هو 3 وبالتالي فتحويل العدد الحقيقي إلى صحيح

يتكفل بإزالة الكسر 25 ويصبح الناتج 3

int m;
  m=vp.Duration/60;

السطر الأول تعريف للمتغير m من نوع رقم والذي سيحمل عدد الدقائق

والسطر الثاني إسناد طول الملف مقسوما على 60 للتحويله إلى دقائق

ولأنا نريد فقط الدقائق دون الكسور سنستخدم دالة جديدة Math.Floor والتي تحذف الكسر وترجع فقط العدد الصحيح

هذه الدالة لها مدخل من نوع رقم Double ودالتي Duration في كائنات الصوت والفيديو ترجع Double أيضاً

int m;
  m =Convert.ToInt32(Math.Floor(vp.Duration/60));

وبنفس الطريقة لكائن تشغيل الصوت :

int m;
  m =Convert.ToInt32(Math.Floor(ap.Duration/60));

أما كائن مشغل ملفات الريل فيجب كما قلنا أن نقسم الناتج على 1000 لتحويله إلى ثواني ثم نقسمع على 60 لتحويله إلى دقائق

وكما نعلم في الرياضيات فإن :

x/y/z=x/y*z

وبالتالي بدل من كتابة كود التحويل هذا :

rp.GetLength()/1000/60

يمكن كتابته هكذا :

rp.GetLength()/60000

لأن 60 * 1000 = 60000

وأيضاً دالة GetLength في كائن مشغل الريل لا ترجع قيمة من نوع Double وهذا يسبب مشكلة في التعامل مع الدالة Math.Floor

لأنه يجب أن تستقبل مدخل من نوع Double

وبالتالي يجب تحويل ناتج الدالة GetLength إلى Double :

ويصبح كود التحويل كاملاً هكذا :

int m;
  m = Convert.ToInt32(Math.Floor(Convert.ToDouble(rp.GetLength()/60000)));

إيجاد الثواني :

نقصد هنا بالثواني الكسر المتبقي من قسمة الثواني على 60

ولإستنتاج المعادلة الرياضية المستخدمة لإيجاد الثواني سنقسم عدد الثواني 195 إلى أربعة أقسام:

60 + 60 + 60 + 15

الثلاثة الحدود الأولي تمثل الثلاث الدقائق التي أستخرجناها من معادلة إيجاد الدقائق وبقي 15 تمثل عدد الثواني المتبقية

يجب لإيجاد الثواني المتبقية أن نستبعد الثواني التي تم تحويلها إلى دقائق

ان أننا نقوم بطرح الثواني التي تم تحويلها إلى دقائق من عدد الثواني الإجمال :

195 - (60 + 60 + 60 ) = 15

بهذه المعادلة إستطعنا إيجاد الثواني المتبقية , ولكن البرنامج كيف يصيغ ما بين الأقواس

لنحول المعادلة قليلاً :

195 - (60 * 3) = 15

ركز على رقم 3 بين الأقواس , أليس هو عدد الدقائق m الذي أوجدناه في الفرقة السابقة ؟

وبالتالي يمكن كتابة المعادلة هكذا :

195 - (60 * m) = 15

إذاً يمكن إيجاد عدد الثواني المتبقية من خلال طرح عدد الدقائق مضروباً في 60 من العدد الإجمالي للثواني

ففي كائن تشغيل الفيديو ستكون تعليمة إيجاد الثواني المتبقية هكذا :

vp.Duration-(60 * m)

وبالتحويل إلى العدد الصحيح تصبح :

Convert.ToInt32(vp.Duration-(60 * m))

إذاً لإيجاد الثواني المتبقية :

int s;
  s =Convert.ToInt32(vp.Duration-(60 * m));

وفي كائن تشغيل الصوت :

int s;
  s =Convert.ToInt32(ap.Duration-(60 * m));

وفي كائن تشغيل ملفات الريل :

int s;
  s =Convert.ToInt32(rp.GetLength()/1000-(60 * m));

لإيجاد الوقت الحالي :

المعادلتين السابقة كانت لإيجاد طول الملف بالدقيقة والثانية

ونحتاج إلى معادلات أخرى لإيجاد الموقع الذي يتم تشغيله حالياً بالدقيقة والثانية

وهي نفس المعادلات السابقة بإستثناء إستبدال Duration بـ CurrentPosition

في كائنات تشغيل الصوت والفيديو

وإستبدال GetLength بـ GetPosition في كائن تشغيل ملفات الريل

حيث أن CurrentPosition و GetPosition ترجع رقم الثانية التي يتم تشغيلها الآن

أو عدد الثواني التي تم تشغيلها , وبالتالي فيمكن حساب الدقائق والثواني

من خلال تطبيق المعادلات السابقة على عدد الثواني التي تم تشغيلها

مثلاً لإيجاد الدقيقة التي يتم تشغيلها حالياً في كائن مشغل الفيديو :

int m;
  m =Convert.ToInt32(Math.Floor(vp.CurrentPosition/60));

وفي كائن مشغل الصوت :

int m;
  m =Convert.ToInt32(Math.Floor(ap.CurrentPosition/60));

وفي كائن مشغل ملفات الريل :

int m;
  m = Convert.ToInt32(Math.Floor(Convert.ToDouble(rp.GetPosition()/60000)));

ولإيجاد الثانية التي يتم تشغيلها حالياً في كائن مشغل الفيديو :

int s;
  s =Convert.ToInt32(vp.CurrentPosition-(60 * m));

وفي كائن مشغل الصوت :

int s;
  s =Convert.ToInt32(ap.CurrentPosition-(60 * m));

وفي كائن مشغل ملفات الريل :

int s;
  s =Convert.ToInt32(rp.GetPosition()/1000-(60 * m));

التطبيق :

إفتح تطبيق الدرس السابق , وأضف متغير محلي من نوع نص يمثل طول الملف بالدقيقة والثانية وليكن length

image16-1.JPG

إنسخ هذا الإجراء إلى الكود وتأكد أنه خارج أي إجراء آخر :

		void SetLength()
		  {
			  try
			  {
			  int m = 0;
			  int s = 0;
				  if (type == "V")
				  {
					  m = Convert.ToInt32(Math.Floor(vp.Duration / 60));
					  s = Convert.ToInt32(vp.Duration - (60 * m));
				  }
				  else if (type == "A")
				  {
					  m = Convert.ToInt32(Math.Floor(ap.Duration / 60));
					  s = Convert.ToInt32(ap.Duration - (60 * m));
				  }
				  else if (type == "R")
				  {
					  m = Convert.ToInt32(Math.Floor(Convert.ToDouble(rp.GetLength() / 60000)));
					  s = Convert.ToInt32((rp.GetLength() / 1000) - (60 * m));
				  }
				  length = Convert.ToString(m) + ":" + Convert.ToString(s);
			  }
			  catch
			  {
			  }
		  }

الإجراء السابق SetLength وظيفته إيجاد طول الملف بالدقيقة و الثانية و إسنادة إلى المتيغر المحلي length

حيث إستخدمنا جملة شرط ثلاثية لفحص نوع الملف

و أدمجنا معادلتي إيجاد الدقائق والثواني في مكان واحد لكل نوع كما شرحنا في الدرس

وفي السطر الأخير من كود جملة try حولنا الدقائق إلى نص , ثم أضفنا إليها : و الثواني بعد تحويلها أيضاً إلى نص

حيث ان المتغير length سيحمل قيمة من نوع نص تمثل طول الملف بهذه الصيغة :

3:15

بقي أن نجد المكان المناسب لإستدعاء هذا الإجراء , حيث من المفترض أن نجد طول الملف بعد أن يتم تحميلة

وبالتالي فإن إجراء تحميل الملف LoadFile هو المكان المناسب لإستدعاء

إذهب إلى كود التطبيق و أضف تعليمة الإستدعاء التالية في نهاية إجراء تحميل الملف :

SetLength();

حيث يصبح إجراء تحميل الملف هكذا :

		void LoadFile(string Path)
		  {
		  StopFile();
		  ap=null;//تصفير الصوت
		  vp=null;//تصفير الفيديو
		  this.Controls.Add(rp);//تصفير الريل
		  rp.Visible=false;//أخفاء مظهر الريل
		  try
		  {
			  vp = Video.FromFile(Path);
				 vp.Owner = this.panel1;
			  panel1.Width = 400;
			  panel1.Height = 300;
			  type="V";
		   }
		   catch
		   {
			   try
			   {
					   ap = Audio.FromFile(Path);
					   type="A";
				}
				catch
				{
					  try
					  {
						  rp.SetSource(Path);	
						  type="R";
					  }
					  catch
					  {
							  MessageBox.Show("الرجاء إختيار ملف صالح");
							  type="N";
					  }		
				  }

			  }
		 SetLength();
		  }

عند تحميل أي ملف سيتم تحميل المتغير length قيمة نصية تمثل طول الملف بالثواني والدقائق

وإجراء إيجاد الوقت الحالي أثناء التشغيل مشابه جدا لإجراء إيجاد طول الملف

ولكن قبله نحتاج إلى مكان على النافذة نكتب عليه طول الملف و الوقت الحالي للتشغيل

حيث سيكون بعذة الصيغة :

1:25/3:15

بإفتراض أن طول الملف هو 3 دقئق و 15 ثانية والوقت الحالي للتشغيل هو الدقيقة الأولى والثانية الخامسة والعشرين

إفتح نافذة التصميم و إسحب كاشن اللافته Label إلى النافذة :

image16-2.JPG

ثم إختره وغير خاصية Name إلى len و غير خاصية Text إلى :

0:0/0:0

والآن إذهب إلى الكود وأنسخ هذا الإجراء وتأكد من أنه خارج أي إجراء آخر :

		void SetPosition()
		  {
			  try
			  {
				  int m = 0;
				  int s = 0;
				  if (type == "V")
				  {
					  m = Convert.ToInt32(Math.Floor(vp.CurrentPosition / 60));
					  s = Convert.ToInt32(vp.CurrentPosition - (60 * m));
				  }
				  else if (type == "A")
				  {
					  m = Convert.ToInt32(Math.Floor(ap.CurrentPosition / 60));
					  s = Convert.ToInt32(ap.CurrentPosition - (60 * m));
				  }
				  else if (type == "R")
				  {
					  m = Convert.ToInt32(Math.Floor(Convert.ToDouble(rp.GetPosition() / 60000)));
					  s = Convert.ToInt32((rp.GetPosition() / 1000) - (60 * m));
				  }

				  len.Text = Convert.ToString(m) + ":" + Convert.ToString(s) + " / " + length;
			  }
			  catch
			  {
			  }
		  }

الإجراء السابق SetPosition يقوم بإيجاد الوقت الحالي للتشغيل بالدقيقة والثانية

في السطر الأخر من جملة try حولنا الدقيقة التي يتم تشغيلها إلى نص ثم أضفنا إليها ":"

ثم أضفنا إليها الثانية التي يتم تشغيلها حالياً , ثم أضفنا إليها "/" ثم طول الملف الذي أوجدناه في الإجراء SetLength

بقي أن نجد المكان المناسب لإستدعاء هذا الإجراء

فالمفروض أن نستدعي الإجراء كل ثانية أي أنا نحتاج إلى مؤقت Timer ولكن يوجد لدينا مؤقت من الدروس السابق

لذلك سنستخدمه عوضاً عن إضافة مؤقت جديد

إذهب إلى كود المؤقت timer1 من خلال النقر مزدوجا على كائن الموقت timer1 من نافذة التصميم

وأضف تعلمية الإستدعاء التاليه في آخر كود المؤقت :

			SetPosition();

حيث يصبح كود المؤقت هكذا :

		void Timer1Tick(object sender, System.EventArgs e)
		  {
		  try
		  {
			  if (trackBar1.Maximum == 0)
			  {
				  SetTrackBar();
			  }
			  if (type=="V")
			  {
				 trackBar1.Value=Convert.ToInt32(vp.CurrentPosition);
			  }
			  else if (type=="A")
			  {
				  trackBar1.Value= Convert.ToInt32(ap.CurrentPosition);
			  }
			  else if (type=="R")
			  {
				  trackBar1.Value=Convert.ToInt32(rp.GetPosition());
			  }
			 SetPosition();
		  }
		  catch
		  {
		  }

		  }

الواجب:

أرسل التطبيق

.نهاية الدرس السادس عشر.

..

تم تعديل هذه المشاركة بواسطة حماة النهضة في 2 سبتمبر 2007 في 20:55

إعذرونا , سنضطر للغياب فترة كبيرة

الأمر ليس بيدنا ...... فسامحونا

#158
Deep_Sea كتب:

الف شكر ع المرور الكريم وحاضر تكرم:

اول شي نوع الملفات اي نوع بشرط يتعامل مع نصوص فقط مثل

txt,ppt,pdf,doc

مثلا كما في ملفات الضغط نختار ملف للضغط وبعدين بنتفل للارشيف مابعرف اذا وضحت الصورة او لا لكن للتوضيح

بعد ما اختار الملف بكون عندي مثلا

textbox

يظهر هذا الملف فيه يارب اتكون الصورة واضحة وشكرا الكوا على كل شي وموفقين ان شاء الله

شكررررررررررررررررررررررررررررررررررررا

قم بإنشاء مشروع جديد و أسحب إلى الفورم مربع نص و كائن أختيار ملفOpenFile Dialog

في مربع النص غير خاصية MultiLine إلى true

وهذا هو كود قراءة الملف إلى مربع النص :


{
textBox1.Text =System.IO.File.ReadAllText (openFileDialog1.FileName,Encoding.GetEncoding("Windows-1256"));
}
			if (openFileDialog1.ShowDialog() == DialogResult.OK)

ولحفظ محتويات مربع النص إلى ملف نصي إستخدم هذا الكود بعد إضافة كائن حفظ الملفات :SaveFile Dialog


{
System.IO.File.WriteAllText (saveFileDialog1.FileName,textBox1.Text,Encoding.GetEncoding("Windows-1256"));
}
			if (saveFileDialog1.ShowDialog() == DialogResult.OK)

أظن أن الكود واضح , وأكتفي بشرح التعليمة :

Encoding.GetEncoding("Windows-1256")

هذا المدخل مهم جداً لقراءة وكتابة الملفات التي تحتوي على حروف عربية , فكائن قراءة الملفات النصية عادة يستخدم التكويد UTF

وهذا التكويد لا يدعم الحروف العربية , لذلك لزم إختيار تكويد يدعم الحروف العربية

بالتوفيق للجميع :)

..

تم تعديل هذه المشاركة بواسطة حماة النهضة في 2 سبتمبر 2007 في 20:54

إعذرونا , سنضطر للغياب فترة كبيرة

الأمر ليس بيدنا ...... فسامحونا

#159

حماة النهضة أزلت الفاصلة المنقوطة ومازالت المشكلة !!

#160

التميمة

يجب إضافة حاصرتين لتشمل جميع التعليمات داخل عبارة for

حاصرة البداية بدل النقطتين

وحاصرة النهاية بعد حاصرة نهاية آخر جزي من جملة if

Ben_Laiid

كنت قد سألت عن كيفية قرائة النصوص من cmd

وطلبت منك التوضيح

لا زلت في إنتظاره smile.gif

..

إعذرونا , سنضطر للغياب فترة كبيرة

الأمر ليس بيدنا ...... فسامحونا

#161

أي نقطتين ما فهمت :( دائما أقف عند الشيء الغبي :(هذا الكود كامل{ for (int x=0;i<13;i++) if(i>6) { L1.Items.Add("Afrah" + Convert.ToString(i)+"<6"); } else if (i==6) { L1.Items.Add("Afrah" + Convert.ToString(i)+"=6"); } else if(i<6) { L1.Items.Add("Afrah" + Convert.ToString(i)+">6"); }ما الخطأ

تم تعديل هذه المشاركة بواسطة التميمية في 4 سبتمبر 2007 في 10:17

#162

السلام عليكم ورحمة الله وبركاته

اولا احب اشكرك مره تانيه علي الدروس

ولكن انا عندي مشكله في درس المصفوفات

انا عملته كله تمام وشغال معايا

لكن المشكله اني لما افتح كذا اغنيه يشغل اول واحده عادي ولكن تغير الاغنيه من الليسته برضه يشغل اول واحده وميرضاش يشغل اللي انا اخترتها

وعملت الدرس اللي بعده وعملت next وبرضه لما عمل نيسكت شغل اول اغنيه

فياريت لو اعرف ايه سبب المشكله دي وانا بحاول فيها

وجزاك الله كل الخير

وياريت لو تكرمت ورفعت المشروع كاملا حتي نستفيد منه اقصي افاده

تم تعديل هذه المشاركة بواسطة khaled_tiger في 5 سبتمبر 2007 في 00:39

Khaled_Tiger

النجاح الوحيد في الحياة هو أن تستطيع أن تحيا حياتك بالطريقة التي تريدها

يخاطبني السفيه بكل قبح *** فأكره أن أكون له مجيبا

يزيد سفاهة فأزيد حلمــا *** كعود زاده الإحراق طيبا

إذا نطق السفيه فلا تجبه *** فخير من إجابته السكوت

فإن كلَمته فرَجت عنــــه *** وإن خليته كمداً يـمـــوت

#163

السلام عليكم حماة النهضه اشكركم على الرد ولكن اذا سمحتولي انا مش هيك قصدي انا مابدي يقرأ وبس انا بدي ينقل الملف يعني تظهر ايقونه بال

textbook

مثلا تنقر عليها يفتح الملف لكن الية نقله كيف وسؤال آخر اذا سمحت هذا مابقرأ الا

.text

انا بدي بوينت وورد واكروبات باختصار في

header file or classes

نقتدر منها نقرا هيك انواع

يعني هل

.text

بنقدر نفتحه من

system.IO

والانواع التي ذكرتها سابقا الها

pakage

خاصة فيها

ياريت اتجاوبوني على اسئلتي ولكم جل الاحترام

جزاكم الله كل الخير ونفع بكم الامة

أحب الله جلا علاه ومن حبي له أخشاه

حياتي كلها لله

#164

السلام عليكم اخي حماة النهضة

ارجوا منك الاطلاع على هذا الخطأ الذي منعني من الاستمرار معكم

وارجوا ان ترسل لي البرنامج حتى اقارن اخطائي فقد قمت باعادة تنصيب الفجيول استديو ونفس المشكلة مع هذا البرنامج فقط

ايميلي

ghabin2004@yahoo.com

جزاك الله خيرا

post-111441-1189009080_thumb.gif

#166

وعليكم السلام ورحمة الله وبركاته

التميمة

يجب أن تضاف حاصرتين على تعليمات جملة for لتصبح هكذا :


{
if(i>6)
{
L1.Items.Add("Afrah" + Convert.ToString(i)+"<6");
}
else if (i==6)
{
L1.Items.Add("Afrah" + Convert.ToString(i)+"=6");
}
else if(i<6)
{
L1.Items.Add("Afrah" + Convert.ToString(i)+">6");
}
}
 for (int x=0;i<13;i++)

khaled_tiger

تأكد من هذا الجزي من الدرس الثامن :

اقتباس
إختيار الملف من قائمة التشغيل

إذهب إلى التصميم , وأنقر مزدوجاً على قائمة التشغيل , ستنتقل إلى شفرة البرنامج

أنسخ الكود التالي حيث مؤشر الفارة " بين حاصرتي إجراء plSelectedIndexChanged


LoadFile(albume[pl.SelectedIndex]);
SetTrackBar();
PlayFile();
StopFile();

وفي الدرس التاسع تأكد من إجراءSetNext

وتأكد أنك إستدعيته عند نهاية تشغيل الملف الحالي:


{
if(serbtn.Checked)
{
if(current==albume.Count-1)
{
current=0;
}
else
{
current=current+1;
}
}
else
{
Random rnd=new Random();
current=rnd.Next(0,albume.Count-1);
}
pl.SelectedIndex = current;
PlayCurrent();
}
void SetNext()

الحقيقة لا يوجد لدي نسخة من المشروع كما هو , لكن بإمكانك رفه مشروعك حتى أتعرف على الخطأ وأفيدك

Deep_Sea

أخي ماذا تقصد "بنقل الملف" ؟

تقصد نسخه من مكان إلى مكان آخر في القرص الصلب ؟

وأما إذا أردت فتح ملفات من أنواع أخري , فلا تستطيع ذلك

لأن لكل ملف نظامه الذي لا يمكن التعرف عليه إلا بواسطة البرامج المشغلة للملف

ghubein

هذا ليس خطأ , وإنما هو تحذير فقط , ولإزالته إذهب إلى قائمة Debug ثم Exceptions

debugexeption.JPG

ثم من النافذة الناتجة إختر :

Managed Debuggting Assistants

,وإبحث عن Loader Lock وقم بإزالة الإشارة من مربع الخيار أمامها ثم إختر OK

loaderlock.JPG

y85.fox

مجهود أكثر من رائع أخي :)

وفقك الله لما يحبه ويرضاه

..

تم تعديل هذه المشاركة بواسطة حماة النهضة في 6 سبتمبر 2007 في 06:40

إعذرونا , سنضطر للغياب فترة كبيرة

الأمر ليس بيدنا ...... فسامحونا

#167

السلام عليكم

اخواني حماة النهضة

بارك الله فيكم على الرد والمتابعة والافادة

جزاكم الله خيرا وبارك فيكم ونفع بكم الامة

#168

بعرف اني غلبتكوا ولكن جعله الله في ميزان حسناتكم

ما اقصده ان يظهر الملف في هذا الشكل

Image.gif

اذا بدنا نعمل نسخ تقريبا مثل القراءة لكن بدنا لما نختار الملف نقرأه وبعد قراءته ينتقل الى

Text box

وتظهر ايقونته هناك

ولكن اريد ان اعرف ايضا هل من الممكن فتح ملف بوربوينت في السي شارب اذا نعم كيف

وجزاكم الله كل الخير

أحب الله جلا علاه ومن حبي له أخشاه

حياتي كلها لله

#169

السلام عليكم

وانا عندي مشاكل !

مش بس تنسيق ;)

أولا:

شكرك لكم

وبارك الله فيكم

ثانيا :

المشاكل الله لايكثرها..

المشكله في هذا الميثود

void sm(int x,string msg)

الاستداعاء حقه

sm(14,"C#");

كيف نحنا نبعث من الاستدعاء

رقم ونص

في حيث انو

Message Box

تتعامل مع

String

فقط

وانا كتبت

Void sm(int x,string d)

ما يقبل ؟؟؟؟؟؟

2ca46b1.gif

والمشكله الثانيه

هي في

هذا


{
int x;
int y;
int z;
x=Convert.ToInt32(t1.Text);
y=Convert.ToInt32(t2.Text);
}
catch
{
MessageBox.Show("???? ?? ????? ????? ???");
}
z=x+y;
MessageBox.Show(Convert.ToString(z));
try

والخطا المكتوب هو

Error 1 The name 'z' does not exist in the current context D:\for API\WindowsApplication2\WindowsApplication2\Form1.cs 34 13 WindowsApplication2

طبعا ثلاثة اخطاء

لمتحولات

z ,x ,y

طبعا جربت كثير

لكن لم يعمل إلا بعد تعطيل جمله

try

2ca46b1.gif

وايضا استفسار صغير عن

System.Environment.Exit(0);

كيف يمكنني الاستفاده منها

وهل عملها مثل

حمله

breck

او تستخدم لايقاف تسغيل البرنامج

وانا اسف على كثر اسالتى

وجزاكم الله كل خير

-waf

#170

مشكور أخوي على المجهود الرائع

لقد قمت بتطبيق البرنامج كاملا ولكن لدي مشكلة في ملف الإس إم إل فعن فتي للملف أجده فارغاً

هذا هو البرنامج

هنـــــــــا

أرجوا منك الإطلاع عليه جزاك الله خير

حماة النهضة كتب:

وهذا ملف XML جاهز - يجب تغيير مسارات الملفات فيه

7oma

حماة النهضة

الرابط لا يعمل بشكل صحيح أرجوا منك رفعة مرة أخرى

أشكرك على وقتك الثمين وتحياتي لك

تم تعديل هذه المشاركة بواسطة f-a-l-c-o-n في 7 سبتمبر 2007 في 18:37

#171

السلام عليكم ورحمة الله وبركاته

الف شكر اخي حماة النهضه علي الرد

بس المشكله اني عامل زي ماهو مكتوب بس مش عارف العيب منين بالظبط

علشان كده انا هرفع المشروع وتشوفه اخي وتقولي ايه المشكله

هرفع جزء في المشاركه دي وجزء في المشاركه التاليه بسبب تحديد مساحة المرفقات

Khaled_Media_Player.part1.rar

Khaled_Tiger

النجاح الوحيد في الحياة هو أن تستطيع أن تحيا حياتك بالطريقة التي تريدها

يخاطبني السفيه بكل قبح *** فأكره أن أكون له مجيبا

يزيد سفاهة فأزيد حلمــا *** كعود زاده الإحراق طيبا

إذا نطق السفيه فلا تجبه *** فخير من إجابته السكوت

فإن كلَمته فرَجت عنــــه *** وإن خليته كمداً يـمـــوت

#172

وهذا باقي البرنامج وانا اسف علي مساحته

وارجوا منك اخي العزيز تفقده ومعرفة سبب المشكله

Khaled_Media_Player.part2.rar

Khaled_Media_Player.part3.rar

Khaled_Tiger

النجاح الوحيد في الحياة هو أن تستطيع أن تحيا حياتك بالطريقة التي تريدها

يخاطبني السفيه بكل قبح *** فأكره أن أكون له مجيبا

يزيد سفاهة فأزيد حلمــا *** كعود زاده الإحراق طيبا

إذا نطق السفيه فلا تجبه *** فخير من إجابته السكوت

فإن كلَمته فرَجت عنــــه *** وإن خليته كمداً يـمـــوت

#173

مو مصدقة نجح التطبيق بعد ما حذفت كل الموجود بالمجلد بوجكت يبدو انه ضروري ما يكون المتغير قد استخدم بنفس الرمز بتطبيق سابق

#174
f-a-l-c-o-n كتب:

مشكور أخوي على المجهود الرائع

لقد قمت بتطبيق البرنامج كاملا ولكن لدي مشكلة في ملف الإس إم إل فعند فتح للملف أجده فارغاً

هذا هو البرنامج

هنـــــــــا

أرجوا منك الإطلاع عليه جزاك الله خير

الرابط لا يعمل بشكل صحيح أرجوا منك رفعة مرة أخرى

أشكرك على وقتك الثمين وتحياتي لك

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…