العودة   منتدى رياض الجنة - Riad Al-Ganah > الرياض التقنية > روضة الكورسات والدورات التقنية والعلمية > روضة دورات تقنية الـ .NET بلغاتها المختلفة > دورة .NET 2008 من منتدى فيجوال بيسك للعرب

دورة .NET 2008 من منتدى فيجوال بيسك للعرب مقدم الدورة : أحمد جمال ، نوع الدورة : كتابية مصحوبة بصور ، حالة الدورة : انتهت ، عدد الدروس : 80 درس . مستوى الدورة : من البداية للاحتراف .

إضافة رد

 
أدوات الموضوع انواع عرض الموضوع
  #1  
قديم 03-04-2010, 03:20 AM
الصورة الرمزية khaledbelal
khaledbelal khaledbelal غير متواجد حالياً
مبرمج المنتدى
الادارة تكليف لا تشريف
 
تاريخ التسجيل: Oct 2009
العمر: 34
المشاركات: 3,606
افتراضي الدرس الثاني والخمسون : Windows Forms - دورة .net 2008

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

خلال هذه السلسلة ، كانت الخطة أنني اقوم بالانتهاء من شرح جميع النقاط الغير متعلقة بالواجهات من خلال Console ، وكان موعدنا الاسبوعي مع ADO.net ، لكننا سنأجل هذه الدروس لنتعرف على الواجهات وما يتعلق بها من تقنيات مثل WPF ، قبل ان نعود لنواصل دروسنا من خلال الواجهات ونكمل النقاط المتبقية لنا وهي :

- Object Serlization And XML .
- ADO.net .
- LINQ .
- WCF .
- WWF .
- وأخيراً ASP.net .
- ختم الحلقات ببعض المواضيع العامة اضافة إلى مشروع .

لذا فهذا هو جدولنا بعد الانتهاء من الواجهات خلال هذا الاسبوع إن شاء الله ...

مقدمة :

تعتبر الكلمة Viusal التي اصبحت متلازمة مع اغلب لغات البرمجة هي الحل السحري لمشاكل تصميم واجهات مناسبة للمستخدم ، في عصر ما قبل لغات البرمجة Visual كنت ستكون مجبر على رسم واجهاتك بالكود ، مع ما يعنيه ذلك من صعوبة وتأخير في وقت التنفيذ اضافة إلى انخفاض مستوى التصميم .

في .net جاءت المكتبة System.Windows.Forms لتقدم لك كل ما تحتاج إليه لتصميم واجهة مناسبة ، هناك أيضاً مجموعة دوال API تعرف باسم GDI+ تمكنك من زيادة كفاءتك الرسومية من خلال مجموعة من الأوامر المخصصة للرسومات 2D ، أخيراً ومع .net 3.0 جاءت لنا مايكروسوفت بتقنية Windows Presentation Foundation او ما تعرف اختصاراً باسم WPF لتزيد من كفاءة الرسوميات ضمن تطبيقات البرمجة لحد مرتفع جداً .

في دورسنا لهذا الاسبوع سوف نبدأ بالتعرف على System.Windows.Forms وربما على ال GDI+ أيضاً ، في حين سنترك عالم WPF للاسابيع القادمة إن شاء الله .

بناء Windows Forms بالكود :

قبل أن نبدأ باستخدام المعالجات الجاهزة التي وفرتها لنا مايكروسوفت ضمن Visual Studio ، يفضل ان نقوم بمحاولة بناء نموذج بعيداً عنها حتى نستطيع فهم كيفية عمل Windows Forms .

لذا قم بفتح المفكرة Notepad ، قم بانشاء ملف مثلاً باسم WindowsForms.cs ، ومن ثم سنبدأ في كتابة الكود .

أولاً سنقوم بتعريف كلاس مشتق من الفئة Forms بالشكل التالي مثلاً :

C#:
كود PHP:
class SimpleWindow Form 
{

vb.net:
كود PHP:
Class SimpleWindow 
    Inherits Form 
 
End 
Class 
والآن سنقوم في حدث Main باستدعاء نسخة منه ، لا تنسى اضافة مكتبات System.Windows.Forms ، لذا سيكون الكود بالكامل بالشكل التالي :

C#:
كود PHP:
using System;
using System.Windows.Forms;
namespace 
WindowsForms
{
class 
Program
{
static 
void Main()
{
Application.Run(new SimpleWindow ());
}
}
}
class 
SimpleWindow Form 
{

vb.net:
كود PHP:
Imports System 
Imports System
.Windows.Forms 
Namespace WindowsForms 
 
    
Class Program 
        
Private Shared Sub Main() 
            
Application.Run(New SimpleWindow()) 
        
End Sub 
    End 
Class 
 
End Namespace 
Class 
SimpleWindow 
    Inherits Form 
 
End 
Class 
الآن فقط كل ما عيك هو فتح Cmd الخاص بك ، وكتابة أمر مثل التالي :

كود PHP:
csc /target:winexe *.cs 
طبعاً بعد الذهاب لمسار البرنامج ، وبعد تعريف csc لتكون جاهزة للاستخدام في أي مكان ، سيكون الناتج شيئاً مثل هذا :



والآن بامكاننا التحكم في بعض الخصائص ، مثل الطول والعرض . الشفافية .... الخ من الخصائص أو حتى تنفيذ الأوامر التي يمكن الوصول إليها من خلال Object Browser بالشكل التالي مثلاً :



لذا نجد ان بامكاننا مثلاً تغيير الطول والعرض وتوسيطه ، لذا سيكون كود الفورم بالشكل التالي :
C#:
كود PHP:
class SimpleForm Form
{
public 
SimpleForm (int heightint widthbool center)
{
Width width;
Height height;
if(
centerCenterToScreen();
}

vb.net:
كود PHP:
Class SimpleForm 
    Inherits Form 
    
Public Sub New(ByVal height As IntegerByVal width As IntegerByVal center As Boolean
        
Width width 
        Height 
height 
 
if center=True Then
         CenterToScreen
() 
 
End If
    
End Sub 
End 
Class 
لكن لا تنس أنك في Run سوف تقوم بتمرير بارميترات إلى الفئة ، بالشكل التالي مثلاً :
C#:
كود PHP:
static void Main()
{
Application.Run(new MainWindow(200300,True));

vb.net:
كود PHP:
Private Shared Sub Main() 
    
Application.Run(New MainWindow(200300, [True])) 
End Sub 
لا تنس طبعاً انه بامكانك الحصول على هذه القيم من خلال Args كما تعلمنا سابقاً ....

اضافة أدوات بالكود :

تعلمنا رسم الفورم بالكود ، جاء الدور الآن على وضع الأدوات المختلفة على الفورم ، يتم ذلك بالواقع من خلال الأوامر التالية :

Add()
AddRange()
لعمليات الاضافة .
Clear()
حذف الجميع .
Count
عدد الادوات ، في الواقع هذه الخاصية مفيدة جداً عند محاولات المرور على الأدوات .
Remove()
RemoveAt()
للحذف .

أما الأدوات التي يمكنك اضافتها ، فجميعها موجود تحت الفئة System.Windows.Forms ، حيث تجد كل الادوات التي تعودت على رؤيتها ...

مثال : اضافة قائمة File - Exit :
سنحاول الوصول للشكل التالي حيث يمكن الخروج بالضغط على زر Exit في القائمة :



الكود سيكون بسيطاً ، سنقوم بتعريف MenuStrip للقائمة ومن ثم ToolStripMenuItem لعناصر القائمة :
C#:
كود PHP:
private System.Windows.Forms.MenuStrip menuStrip1;
        private 
System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
        private 
System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem
vb.net:
كود PHP:
Private menuStrip1 As System.Windows.Forms.MenuStrip 
    
Private fileToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem 
    
Private exitToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem 
الخطوة الثانية هي عمل دالة في ال Constructor وليكن اسمها BuildForm ، بدلاً من وضع الاكواد مباشرة في ال Constructor .
C#:
كود PHP:
public SimpleForm()
{
Text="Example. Simple Form";
BuildForm();

vb.net:
كود PHP:
Public Sub New() 
        
Text "Example. Simple Form" 
        
BuildForm() 
    
End Sub 
الآن سنقوم ببرمجة هذه الدالة ، سنقوم بوضع اسماء للعناصر ونضيفها باستخدام Add للقائمة الرئيسية :
C#:
كود PHP:
fileToolStripMenuItem.Text "&File";
menuStrip1.Items.Add(mnuFile);
exitToolStripMenuItem.Text "E&xit";
menuStrip1.DropDownItems.Add(mnuFileExit); 
vb.net:
كود PHP:
fileToolStripMenuItem.Text "File" 
        
menuStrip1.Items.Add(mnuFile
        
exitToolStripMenuItem.Text "Exit" 
        
menuStrip1.DropDownItems.Add(mnuFileExit
الخطوة الثانية هي اضافة Handler لحدث الضغط لعنصر Exit بالشكل التالي :
C#:
كود PHP:
exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); 
vb.net:
كود PHP:
AddHandler exitToolStripMenuItem.ClickAddressOf exitToolStripMenuItem_Click 
أخيراً سنعتمد القائمة الرئيسية لتكون القائمة الخاصة بال Form بالشكل التالي بعد اضافتها للفورم :

C#:
كود PHP:
Controls.Add(this.mnuMainMenu);
MainMenuStrip this.menuStrip1
vb.net:
كود PHP:
Controls.Add(Me.mnuMainMenu
        
MainMenuStrip Me.menuStrip1 
الآن سوف نقوم بكتابة الحدث الخاص بالضغط على زر Exit :
C#:
كود PHP:
private void exitToolStripMenuItem_Click(object senderEventArgs e)
{
Application.Exit();

vb.net:
كود PHP:
Private Sub exitToolStripMenuItem_Click(ByVal sender As ObjectByVal e As EventArgs
        
Application.[Exit]() 
    
End Sub 
بهذا يكون الكود الاجمالي بالشكل التالي :
c#:
كود PHP:
class SimpleFormForm
{
private 
System.Windows.Forms.MenuStrip menuStrip1;
        private 
System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
        private 
System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
public 
SimpleForm()
{
Text="Example. Simple Form";
BuildForm();
}
private 
void BuildForm()
{
fileToolStripMenuItem.Text "File";
menuStrip1.Items.Add(mnuFile);
exitToolStripMenuItem.Text "Exit";
menuStrip1.DropDownItems.Add(mnuFileExit);
exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);

Controls.Add(this.mnuMainMenu);
MainMenuStrip this.menuStrip1;
}

private 
void exitToolStripMenuItem_Click(object senderEventArgs e)
{
Application.Exit();
}

vb.net:
كود PHP:
Class SimpleForm 
    Inherits Form 
    
Private menuStrip1 As System.Windows.Forms.MenuStrip 
    
Private fileToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem 
    
Private exitToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem 
    
    
Public Sub New() 
        
Text "Example. Simple Form" 
        
BuildForm() 
    
End Sub 
    
Private Sub BuildForm() 
        
fileToolStripMenuItem.Text "&File" 
        
menuStrip1.Items.Add(mnuFile
        
exitToolStripMenuItem.Text "E&xit" 
        
menuStrip1.DropDownItems.Add(mnuFileExit
        
AddHandler exitToolStripMenuItem.ClickAddressOf exitToolStripMenuItem_Click 
        
        
        Controls
.Add(Me.mnuMainMenu
        
MainMenuStrip Me.menuStrip1 
    End Sub 
   
    
    
Private Sub exitToolStripMenuItem_Click(ByVal sender As ObjectByVal e As EventArgs
        
Application.[Exit]() 
    
End Sub 
End 
Class 
في الدرس القادم سوف نقوم ببناء نفس التطبيق ولكن من خلال Visual Studio.net ...

انشاء فورم عن طريق Viusal Studio.net :
فقط افتح Visual Studio 2008 ، من قائمة File-New قم باختيار Windows Forms Application :



الآن من القائمة الجانبية Tool Box اختر MenuStrip ، ستجد الشكل التالي :



الآن وكما فعلت قم بالتفرع كما تريد وتصميم القائمة ، عند الضغط مرتين على العنصر Exit ستجد الأمر جاهزاً للكتابة بالشكل التالي :



الآن اكتب الكود ، ومن ثم اضغط على F5 وجرب .
والآن ألا تتفق معي أن الوضع أصبح أسهل كثيراً ....

في الدرس القادم سوف نتعرف على التعامل مع الواجهة الرسومية وما يتعلق بها ، قبل ان ننتقل للأدوات والخصائص في موجز سريع ...

الآن ، سنتعرف على محتويات الواجهة الرئيسية .

في مرحلة سابقة من الدروس تعرفنا على بعض النقاط في واجهة Visual Studio ، الآن سنواصل التعرف على النقاط الخاصة بالواجهة الرسومية .

ToolBox :
يحتوي على الأدوات الرئيسية التي نحتاج اليها ، لو لم يكن ظاهراً يمكننا اظهاره من View - ToolBox .

أهم الادوات التي نحتاج إليها موجودة تحت التبويب All Windows Forms ، مع ذلك ما زال بامكاننا اضافة تبويب جديد واضافة أدوات أخرى إليه ، عن طريق Add Tab ومن ثم Choose Item واختيار العنصر الذي ترغب فيه :



Tabs Group :



يحتوي على جميع ما قمت بفتحه ، حيث يمكنك التنقل بينها .


Properties Windows :



تجد فيها الخصائص التي ترغب في تعديلها لأي عنصر يتم تحديده على الفورم ، هذه الصورة توضح خصائص احد عناصر القائمة :


Solution Explorer :



يمكنك من تصفح محتويات مشروعك من نوافذ Forms أو فئات Classes او حتى صور و Resources :


Class View :



استعراض الفئات الموجودة لديك وخصائصها ودوالها وخلافه .

كيف يعمل ال Visual Studio.net في انشاء النماذج ؟

بنفس الطريقة التي تعلمناها بالكود ، ستجد لديك من قائمة Solution Explorer ثلاثة ملفات :

Form1.cs :
سيمكنك من التحكم في الفورم يدوياً عن طريق الوضع [Design] ايضاً تجد الأكواد التي قمت بكتابتها في هذا الملف ، يقوم كثير من المبرمجين بالتبديل بين الوضعين بالتنقل من القائمة العلوية ، او الضغط مرتين على اي اداة لفتح الكود الخاص بها . يمكنك عمل ذلك بطريقة مثالية عن طريق الضغط على الفورم بزر الماوس الأيمن واختيار الوضع Design - Code أو حتى Class Diagram .

Form1.Designer.cs :
هنا تجد الاكواد الخاصة بانشاء الأدوات والفورم ، لو قمت بفتحه ستجد اكواداً شبيهة بتلك التي استخدمناها في الجزء الأول من هذا الدرس :




Form1.rex :
يحتوي على المصادر المستخدمة وخلافه .

الفئات الرئيسية لعناصر Windows.Forms :
الفورم هو العنصر الاساسي في هذه الفئة ، وهو مشتق من الفئات التالية :

System.Object
العنصر الاساسي لكل كائنات .net

System.MarshalByRefObject.
لنتمكن من الوصول byref إلى الفورم

System.ComponentModel.Component
لثالث مشتق من ال Interface المسمى IComponent

System.Windows.Forms.Control.
سنتناوله بالتفصيل لاحقاً .

System.Windows.Forms.ScrollableControl
من اجل استخدام ال Scrolls ، اي عنصر مشتق منها يمكن ان يتمتع بهذه الخاصية .

System.Windows.Forms.ContainerControl
من اجل جعله يمكن ان يحتوي على Controls أخرى ، اي عنصر مشتق منها يمكن ان يحتوي بداخله على عناصر أخرى .

System.Windows.Forms.Form
سنتناوله بالتفصيل لاحقاً .

ذكرنا أن ال Form مشتق من الفئة System.Windows.Forms.Form ، لذا فإن جميع خصائص ودوال وأحداث هذه الفئة تنتقل له بالتبعية ، وهي ما سنتعرف عليها الآن :

خصائص الفئة Form :

AcceptButton : تحديد الزر الذي يتم تنفيذ أوامره عند ضغط المستخدم على Enter .
ActiveMDIChild : عندما يكون للفورم أبناء ، يتم هذا لتحديد الإبن النشط .
IsMDIChildIsMDIContainer : لتحديد امكانية جعل هذا الفورم حاضن لفورمات أخرى .
CancelButton : تحديد الزر الذي يتم تنفيذ أوامره عندما يضغط المستخدم على زر Esc .
ControlBox : تحديد هل للفورم Control Box أم لا .
FormBorderStyle : تحديد شكل حدود الفورم .
Menu : تحديد القائمة الرئيسية للفورم .
MaximizeBox : عرض زر التكبير والتصغير أم لا ، ستجد واحدة أخرى باسم Minimize لعرض زر وضعه في الشريط السفلي .
ShowInTaskbar : تحديد العرض في الشريط السفلي للويندوز أم لا .
StartPosition : تحديد نقطة البداية للفورم عند ظهوره لأول مرة ، يتم اختيارها من enumeration المسمى FormStartPosition والذي يحتوي على العناصر التالية :



WindowState : تحديد حالة الفورم والتي يتم اختيارها من ال enumeration المسمى FormWindowState والذي يحتوي على العناصر التالية :



دوال الفئة Form :

Activate() : لتنشط الفورم .
Close() : اغلاق الفورم .
CenterToScreen() : وضع الفورم في منتصف الشاشة .
LayoutMDI() : تحديد نظام عرض الشاشات الأبناء في حالة وجودها
ShowDialog() : عرض الفورم بصورة Dialog بحيث لا يمكن الرجوع لما خلفها إلا بعد اغلاقها .

أحداث الفئة Form :

Activated : ينطلق هذا الحدث عندما يتم تنشيط الفورم سواء بأمر Activate او عندما يقوم المستخدم بجعله النافذة النشطة على سطح مكتبه .
Closing : عندما يبدأ حدث الإغلاق .
Closed : عندما ينتهي حدث الإعلاق .
Deactivate : عندما يذهب التحكم إلى شيء آخر غير الفورم .
Load : عندما يتم تحميل الفورم ، ولكن ينطلق هذا الحدث قبل ظهور الفورم على الشاشة أصلاً - لتجنب واحد من أكثر الأخطاء شيوعاً - .
MDIChildActive : عند تحديد واحد من الشاشات الأبناء في حالة وجودها .

كما ذكرنا ايضاً سابقاً ، فإن الفورم مشتق من الفئة Controls ، ولذا فهو يتمتع بكافة مميزاتها والتي سنستعرضها هنا .

خصائص الفئة Controls :

BackColor : لون الخلفية .
ForeColor : لون النص الداخلي .
BackgroundImage : خلفية صورة .
Font : الخط وحجمه ونوعه وخلافه .
Cursor : نوع المؤشر الذي يظهر عند العبور فوق الأداة أو الفورم .
Anchor : للتعامل مع خاصية ال Dock والتي تثبت مكان الادوات على الفورم مهما تغير حجم الفورم .
AutoSize : حجم تلقائي للاداة حسب محتوياتها .
Top : موضع الاداة او الفورم من الحد العلوي للاب.
Left : موضع الاداة او الفورم من الحد الأيسر للأب .
Bottom : موضع الاداة او الفورم من الحد الأسفل للأب .
Right : موضع الاداة او الفورم من الحد الأيمن للأب .
Bounds : الحدود .
ClientRectangle : من مربع .
Height : الطول .
Width : العرض .
Enabled : تحديد امكانية التحكم بالأداة او الفورم من عدمه .
Visible : الظهور والاختفاء .
ModifierKeys : قراءة حالة ال ModifierKeys مثل ال Alt و Ctrl و Shift .
MouseButtons : معرفة الزر المضغوط من الماوس ( أيمن - ايسر - المنتصف ) .
TabIndex: تحدد ترتيب العناصر للانتقال بينها بواسطة زر Tab .
TabStop : منع الوصول للعنصر من خلال زر Tab .
Opacity : درجة الشفافية ما بين 0 و 1 .
Text : النص المعروض داخل الاداة .
Controls : تمكنك من الوصول للاداوات الداخلية في حالة كان العنصر قادراً على استيعاب عناصر داخله .

أحداث الفئة Controls :

Click : الضغط بالماوس .
DoubleClick : ضغطتين بالماوس .
MouseEnter : دخول الماوس .
MouseLeave : خروج الماوس من نطاق الاداة .
MouseDown : ضغط زر الماوس لاسفل .
MouseUp : رفع الاصبع عن ضغطة زر الماوس .
MouseMove : عبور الماوس فوق نقطة .
MouseHover
MouseWheel : الضغط على ال Wheel
KeyPress : ضغط زر .
KeyUp : ضغط زر لاسفل .
KeyDown : رفع الاصبع عن الزر المضغوط .
DragDrop : سحب اداة فوق .
DragEnter : دخول اداة لمجال اداة أخرى .
DragLeave : خروج .
DragOver : عبور فوق .
Paint : حدث الرسم .

ذكرنا في الدرس السابق بإننا سنقوم باستعراض الأدوات ، أول نقطة عليك معرفتها هي أن كل الأدوات مشتقة من الفئة Controls لذا فإن أي
أداة ستتمتع بالخصائص والأحداث التي قمنا بشرحها في الدرس السابق مباشرة .

الآن سنستعرض بعض الأدوات الرئيسية لدينا .

Button :
زر أمر عادي جداً ، يحتوي على بعض الخصائص مثل :
FlatStyle : تحديد مظهر زر الأمر .
TextAlign : موضع النص من زر الأمر .

CheckBox :
زر الاختيار المتعدد ، يمكننا اختيار عدة عناصر ، يحتوي على خصائص اضافية مثل :
CheckState : حالة الاختيار .
ThreState : لتحديد كونه يحمل خاصية ثالثة ( مفعل - غير مفعل - مفعل جزئياً ) .

RadioButton :
مثل السابق ولكنه يسمح لك باختيار واحد ، لو كنت تريد استخدامه لأكثر من مرة ضع كل منهم في panel مختلف .
ComboBox و ListBox .
قائمة للاختيار من ضمن خيارات ، الاولى في صف واحد والثانية حسب الحجم المطلوب .
يحتوي على جميع الخصائص التي تعلمناها في Collection.List مثل Items.Add و Items.Remove ....
الخ .


Textbox :
أداة نصية تسمح للمستخدم بالكتابة داخلها ، بعض خصائصها الاضافية .
ReadOnly : جعلها للقراءة فقط .
PasswordChar : الرمز الذي يظهر في حالة جعل مربع النص للادخال .
MultiLine : السماح بجعلها متعددة الأسطر .
maxLength : الطول الاقصى للنص .
ScrollsBar : اشرطة التمرير حيث انها مشتقة من الفئة
System.Windows.Forms.ScrollableControl ، لذا سيكون بامكاننا اختيار وضع من ال enumeration المسمى ScrollBars :

لمعرفة المزيد عن هذه الاداة يمكن مراجعة درس الاخ أحمد بدر هنا :
http://vb4arab.com/vb/showthread.php?t=4763

Label :
أداة لعرض النصوص .
GroupBox و Panel :
أدوات حاوية يمكن وضع أدوات أخرى بداخلها .

RichTextBox :
أداة نص تسمح لمحتوياتها ان تحتوي على تنسيقات مختلفة ، الفارق بينها وبين TextBox هو الفارق بين Notepad و Wordpad ،
تحتوي على الخصائص الاضافية التالية :
Wordwrap : لتحديد التفاف النص .
Select : لتحديد جزء من النص عن طريق نقطة بداية ونهاية ، او نقطة بداية وطول .
SelectionXXX : لتحديد تنسيق خط للجزء المحدد ، مثل اللون SelectionColor .

كما يحتوي على الدوال الاضافية التالية :
LoadFile : لفتح ملف نصي من مسار معين .
SaveFile : لحفظ الملف في مكان معين .

يمكنك التعرف على المزيد عنها من خلال درس الأخ أحمد بدر هنا :
http://vb4arab.com/vb/showthread.php?t=4638

Timer :
أداة للمؤقت ، لها حدث Ticker والذي يتم تنفيذه كل Interval معين ، تفيد في حالة عمل اوامر تكراريه بفوارق زمنية .

TreeView :
لعرض أداة الشجرة ، عنصرها الاساسي هو Nodes والذي يمكن من خلاله اضافة أي عناصر وحذفها .

Progressbar :
لعرض مؤشر التقدم ، خصائصه الاساسية هي Minimum - Maximum لتحديد الحد الأعلى والأدنى اضافة للخاصية Step لتحديد مقدار التقدم كل مرة ، يمكنك تحديد style لعملية التقدم من خلال الخاصية Style والتي تقرأ من ال enumeration المسمى ProgressBarStyle .
يمكن تحديد الخاصية لاحقاً باستخدام الخاصية Value .

يمكنك التعرف على المزيد عنها من خلال درس الأخ أحمد بدر هنا :
http://vb4arab.com/vb/showthread.php?t=4810

Trackbar :
مشابه لل Progressbar لكنك انت من تتحكم بقيمته ، مثل Trackbar الخاص برفع وخفض الصوت .

DateTimePicker
أداة لاختيار التواريخ والأوقات ، يمكنك التعرف على المزيد عنها من خلال درس الأخ أحمد بدر هنا :
http://vb4arab.com/vb/showthread.php?t=4761

الأدوات كثيرة جداً ولا جدوى من اضاعة الوقت في التعرف على تفاصيلها ... لذا أكتفي بأن احيلك إلى موقع مايكروسوفت حيث تجد شرحاً تفصيلياً لكل أداة :
http://msdn.microsoft.com/en-us/libr...65(VS.71).aspx

هناك عناصر أخرى هي ال Dialogs سنتعرف عليها في مرة قادمة إن شاء الله ...
راحة قصيرة أعود بعدها للإكمال إن شاء الله ...

Dialogs :

في بداية موضوعنا عن المربعات الحوارية سنقوم أولاً بتصميم واحد خاص بنا ، ثم في المرحلة الثانية سنقوم بالتعرف على استخدامات بعض المربعات الحوارية الشائعة .

قم بانشاء فورم جديد ، قم بالغاء خاصية ال resizeable ، قم بضبط خاصية FormBorderStyle إلى FixedDialog ، قم باخفاء MinimizeBox و MaximizeBox ... بهذه الطريقة يكون تصميم أغلب المربعات الحوارية .

الآن قم بتصميم المربع الحواري كما يحلو لك ، في اي مربع حواري أو Dialog يكون الناتج واحداً من العناصر المعرفة في enumeration المسمى DialogResult والذي يحتوي على القيم التالية :

رمز:

Abort, Cancel, Ignore, No, None, OK, Retry, Yes
لضبط الزر الذي يعيد القيمة OK نضبط خاصية ال AcceptButton للفورم على الزر المختار .
ايضاً الامر بسيط بالنسبة للخاصية Cancel حيث نجد الخاصية CancelButton .

لاظهار فورم بصورة مربع حواري Dialog نستخدم الأمر ShowDialog بالشكل التالي مثلاً :
رمز:

newDialog.ShowDialog()
ولكن وبما اننا بحاجة لقراءة القيم الناتجة عنه ومعرفة اي زر تم اختياره ، سنكتب الكود الخاص بنا بالشكل التالي على سبيل المثال :

C#:
كود PHP:
if (newDialog.ShowDialog() == DialogResult.Cancel)
{
// do something
}
else if (
newDialog.ShowDialog() == DialogResult.Ok)
{
// do something else

vb.net:
كود PHP:
If newDialog.ShowDialog() = DialogResult.Cancel Then 
        
' do something 
ElseIf newDialog.ShowDialog() = DialogResult.Ok Then 
        ' 
do something else 
End If 
ولو حاولنا قراءة محتويات ال Dialog سيكون لزاماً علينا تعريف القيم المطلوبة public ، لذا قم مثلاً بتعديل مربع النص بالشكل التالي :
كود PHP:
public System.Windows.Forms.TextBox TextBox1
MessageBox:

النوع الابسط والأسهل من ال Dialogs هو رسائل التحذير MessageBox ، صورتها الأبسط بالشكل التالي :
كود PHP:

MessageBox
.Show("Welcome ..."); 
لو جربت معرفة البارميترات التي يمكن ارسالها للدالة Show ستجد 20 overloads ، تتيح لك التحكم بأي شكل في رسائلك التحذيرية ، سنستعرض اثنين منها هنا :

- اظهار رسالة تحذيرية كاملة :
الكود :
كود PHP:
MessageBox.Show("Welcome ...","Title",MessageBoxButtons.OK,MessageBoxIcon.Exclamation); 
المظهر :



- اظهار رسالة تحذيرية تخيرك بين عدة حالات ، مع جعل واحد منها افتراضياً .
C#:
كود PHP:
DialogResult reslt MessageBox.Show("Do you want to save""Title"MessageBoxButtons.YesNoCancelMessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1);
            if (
reslt DialogResult.Yes)
                
MessageBox.Show("you want to save.");
            else if (
reslt DialogResult.No)
                
MessageBox.Show("you don't want to save.");
            else if (
reslt DialogResult.Cancel)
                
MessageBox.Show("you cancel this operation."); 
vb.net:
كود PHP:
Dim reslt As DialogResult MessageBox.Show("Do you want to save""Title"MessageBoxButtons.YesNoCancelMessageBoxIcon.ExclamationMessageBoxDefaultButton.Button1
If 
reslt DialogResult.Yes Then 
    MessageBox
.Show("you want to save."
ElseIf 
reslt DialogResult.No Then 
    MessageBox
.Show("you don't want to save."
ElseIf 
reslt DialogResult.Cancel Then 
    MessageBox
.Show("you cancel this operation."
End If 
هناك عدة اختيارات أخرى ، تتيح لك اظهار ملف مساعدة ... الخ ، يمكنك استعراضها جميعاً من خلال هذا الرابط :
http://msdn.microsoft.com/en-us/libr...ebox.show.aspx

Dialogs Controls .

بعد ان تعرفنا على النوع الأبسط من المربعات الحوارية وتعلمنا كيفية انشاءها ، جاء الدور الآن على تعلم كيفية استخدام المربعات الحوارية الأساسية الموجودة ضمن الأدوات ...


Color Dialog :
مربع اختيار الألوان ، قم باضافته من ال ToolBox وسننشأ الآن مثالاً بسيطاً لتغيير لون الخلفية لصورة مثلاً :



ضف صورة picturebox زر أمر بسيط واكتب فيه الأمر التالي :
C#:
كود PHP:
if (colorDialog1.ShowDialog() == DialogResult.OK)
pictureBox1.BackColor colorDialog1.Color;
else
MessageBox.Show("cancel operation"); 
vb.net:
كود PHP:
If colorDialog1.ShowDialog() = DialogResult.OK Then 
pictureBox1
.BackColor colorDialog1.Color 
Else 
MessageBox.Show("cancel operation"
End If 
هناك بعض الخصائص الاضافية في مربع الحوار هذا لكنها غير شائعة الاستخدام مثل AllowFullOpen والتي تستطيع منع المستخدم من اختيار غير الالوان القياسية بالشكل التالي مثلاً :



والخاصية fullopen التي تظهرها بالكامل مباشرة بالشكل التالي مثلاً :



رابط تفصيلي من مايكروسوفت :
http://msdn.microsoft.com/en-us/libr...lordialog.aspx

Font Dialog :

يستخدم لاختيار الخطوط ، سنقوم الآن بعمل مثال لتغيير خط مربع نص :



C#:
كود PHP:
fontDialog1.ShowColor true;
            
fontDialog1.Font textBox1.Font;
            
fontDialog1.Color textBox1.ForeColor;
            if (
fontDialog1.ShowDialog() == DialogResult.OK)
            {
                
textBox1.Font fontDialog1.Font;
                
textBox1.ForeColor fontDialog1.Color;
            } 
vb.net:
كود PHP:
fontDialog1.ShowColor True 
fontDialog1
.Font textBox1.Font 
fontDialog1
.Color textBox1.ForeColor 
If fontDialog1.ShowDialog() = DialogResult.OK Then 
    textBox1
.Font fontDialog1.Font 
    textBox1
.ForeColor fontDialog1.Color 
End 
If 

رابط تفصيلي من مايكروسوفت :
http://msdn.microsoft.com/en-us/libr...og(VS.80).aspx

Open And Save Dialogs :

اشهر نوعين من المربعات الحوارية ، في العادة يتم استخدامهم لتحديد عملية فتح الملفات أو تحديد مكان حفظها ، سنقوم بعمل مثال بسيط نقوم من خلال بفتح ملف نصي ، التعديل عليه ومن ثم حفظه :
اضف مربع نص بسيط واجعل خاصية Multiline=True ، ضف زر للحفظ وآخر للفتح ، وأخيراَ لن نقوم باضافة OpenFileDialog و SaveFileDialog بل سنضيفهم من خلال الكود مباشرة .

أول عملية لدينا هي استخدام المربع الحواري لتحديد الملفات النصية ومن ثم اختيار واحد منها :
C#:

كود PHP:
string fileToOpen="";
            
OpenFileDialog openFile = new OpenFileDialog();
            
openFile.DefaultExt "txt";
            
openFile.Filter "Word ********s (*.txt)|*.txt";
            if (
openFile.ShowDialog() == DialogResult.OK)
                
fileToOpen openFile.FileName
vb.net:
كود PHP:
Dim fileToOpen As String "" 
Dim openFile As New OpenFileDialog() 
openFile.DefaultExt "txt" 
openFile.Filter "Word ********s (*.txt)|*.txt" 
If openFile.ShowDialog() = DialogResult.OK Then 
    fileToOpen 
openFile.FileName 
End 
If 
الآن اصبح لدينا مسار الملف في متغير ، سنقوم بعملية وضع محتوياته في مربع نص بطريقة تعلمناها سابقاً :
C#:
كود PHP:
if (fileToOpen != "")
            {
                
using (System.IO.StreamReader s1 System.IO.File.OpenText(fileToOpen))
                {
                    
string input null;
                    
textBox1.Text "";
                    while ((
input s1.ReadLine()) != null)
                    {
                        
textBox1.Text += input;
                    }

                }
            } 
vb.net:
كود PHP:
If fileToOpen <> "" Then 
    Using s1 
As System.IO.StreamReader System.IO.File.OpenText(fileToOpen
        
Dim input As String Nothing 
        textBox1
.Text "" 
        
While (input s1.ReadLine()) IsNot Nothing 
            textBox1
.Text += input 
            
            
        End 
While 
    
End Using 
End 
If 
الآن سنستخدم مربع حوار الحفظ لتحديد المكان الذي نود فيه حفظ الملف :
C#:

كود PHP:
string fileToSave "";
            
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
            
saveFileDialog1.Filter "txt files (*.txt)|*.txt|All files (*.*)|*.*";
            if (
saveFileDialog1.ShowDialog() == DialogResult.OK)
                
fileToSave saveFileDialog1.FileName
vb.net:
كود PHP:
Dim fileToSave As String "" 
Dim saveFileDialog1 As New SaveFileDialog() 
saveFileDialog1.Filter "txt files (*.txt)|*.txt|All files (*.*)|*.*" 
If saveFileDialog1.ShowDialog() = DialogResult.OK Then 
    fileToSave 
saveFileDialog1.FileName 
End 
If 
وكما تعلمنا سابقاً ، نقوم بحفظ الملف النصي في المسار الذي قام المستخدم باختياره :
C#:
كود PHP:
if (fileToSave!="")
                {
                    
using (System.IO.StreamWriter w1 System.IO.File.CreateText(fileToSave))
                    {
                        
w1.WriteLine(textBox1.Text);
                    }
                } 
vb.net:
كود PHP:
If fileToSave <> "" Then 
    Using w1 
As System.IO.StreamWriter System.IO.File.CreateText(fileToSave
        
w1.WriteLine(textBox1.Text
        
    
End Using 
End 
If 


هناك بعض الخصائص الاضافية لكلا الكائنين ، يمكنك الاطلاع على المزيد عنهما هنا :
http://msdn.microsoft.com/en-us/libr...92(VS.71).aspx
http://msdn.microsoft.com/en-us/libr...iledialog.aspx
حيث يمكنك تحديد نوع من الملفات او قراءة اسم المجلد او اسم الملف فقط ، تحديد أكثر من ملف للفتح ... الخ .

print Dialog :

يستخدم للتحكم في خصائص عملية الطباعة ، يمكن ان يفيدك الرابط التالي من مايكروسوفت :

http://msdn.microsoft.com/en-us/libr...intdialog.aspx

إلى هنا نكون قد انتهينا من محتويات هذا الدرس ، في الدرس القادم سنتعرف على كيفية التقاط أحداث الكيبورد والماوس .

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


توقيع : khaledbelal



(أَفَأَمِنَ أَهْلُ الْقُرَى أَن يَأْتِيَهُمْ بَأْسُنَا بَيَاتاً وَهُمْ نَآئِمُونَ {97} أَوَ أَمِنَ أَهْلُ الْقُرَى أَن يَأْتِيَهُمْ بَأْسُنَا ضُحًى وَهُمْ يَلْعَبُونَ {98}
أَفَأَمِنُواْ مَكْرَ اللّهِ فَلاَ يَأْمَنُ مَكْرَ اللّهِ إِلاَّ الْقَوْمُ الْخَاسِرُونَ {99}).
سورة الأعراف.

رد مع اقتباس
  #2  
قديم 03-04-2010, 01:55 PM
الصورة الرمزية المشتاقة للجنة
المشتاقة للجنة المشتاقة للجنة غير متواجد حالياً

مراقبة عامة

 
تاريخ التسجيل: Nov 2009
المشاركات: 4,422
افتراضي

شـكــ وبارك الله فيك ـــرا لك . موفق بإذن الله


توقيع : المشتاقة للجنة


اللهم اغفر لي ولوالدي وللمؤمنين والمؤمنات والمسلمين والمسلمات الاحياء منهم والاموات

اللهم صل وسلم وبارك على حبيبنا محمد وعلى آله وصحبه اجمعين

رد مع اقتباس
  #3  
قديم 12-17-2010, 10:18 AM
الصورة الرمزية ماريا إسلام
ماريا إسلام ماريا إسلام غير متواجد حالياً

عضو متألق

 
تاريخ التسجيل: Oct 2010
العمر: 35
المشاركات: 268
افتراضي

وعليكم السلااااااااااااام
جزااااكم الله خيرا كثيراااااااا
//


توقيع : ماريا إسلام

ربي هذا العهد لك ... عزم القلب الوفا

تستطيع أن ترى الصورة بحجمها الطبيعي بعد الضغط عليها

تستطيع أن ترى الصورة بحجمها الطبيعي بعد الضغط عليها

صفحتي على الفيسبوك!

رد مع اقتباس
إضافة رد


تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
الدرس الثاني والستون : ADO.net - الجزء الثاني - دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 3 05-03-2011 11:37 PM
الدرس الثامن والخمسون : Wpf 3d - دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 03-07-2010 02:19 AM
الدرس السابع والخمسون : Wpf 2d - دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 2 03-05-2010 06:57 PM
الدرس الخامس والخمسون : مقدمة إلى Wpf - دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 03-04-2010 06:28 PM
الدرس الرابع والخمسون : Gdi+ - دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 03-04-2010 06:14 PM

استضافة الحياة

الساعة الآن 10:34 PM.


Powered by vBulletin® v3.8.4, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. , TranZ By Almuhajir
النسخة الفضية
Ads Management Version 3.0.1 by Saeed Al-Atwi

SlamDesignzslamDesignzEdited by Riad Al-Ganah Team - جميع الحقوق محفوظة لشبكة رياض الجنة

Privacy Policy Valid XHTML 1.0 Transitional By SlamDesignz Valid CSS Transitional By SlamDesignz