تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] ما الأداة الأخف لتصميم أشكال هندسية Button أم Label
#1
سلام إخواني

أريد تصميم مثل خريطة بنايات أو شقق بحيث سيتم تلوين الشقق المسكونة
لدي أكثر من 200 شقة مثلا
هل أستخدم Button أم Label 
من الأخف أكثر
لأنه سيتم فتح و غلق الفورم عدة مرات ولا أريد أن يكون هناك ثقل كثير

ما الأداة اللتي في نظركم أكثر كفاءة لأصمم بها هده الأشكال 


الرد }}}
تم الشكر بواسطة:
#2
اخي الكريم قمت بتنفيذ تجربة لقياس الوقت باستخدام labels و buttons لمعرفة ايهم يأخذ وقت اطول

انشأت فورم للازرار وفورم لليبلات وفورم فارغ للمقارنة

وضعت في كل فورم 224 اداه وقمت باستخدام Stopwatch لقياس الوقت بين انشاء الفورم وظهورة فعلا على الشاشة

   
   
   
   

وقمت في الفورم الرئيسي باستدعاء كل فورم منهم 10 مرات ، وكانت النتائج كما التالي :

إقتباس :
Main Form Time : 4919
buttonsForm Time : 388
buttonsForm Time : 284
buttonsForm Time : 275
buttonsForm Time : 290
buttonsForm Time : 300
buttonsForm Time : 292
buttonsForm Time : 280
buttonsForm Time : 289
buttonsForm Time : 271
buttonsForm Time : 303
LabelsForm Time : 381
LabelsForm Time : 235
LabelsForm Time : 257
LabelsForm Time : 237
LabelsForm Time : 233
LabelsForm Time : 249
LabelsForm Time : 239
LabelsForm Time : 248
LabelsForm Time : 251
LabelsForm Time : 273
Empty Form Time : 13
Empty Form Time : 16
Empty Form Time : 16
Empty Form Time : 15
Empty Form Time : 16
Empty Form Time : 16
Empty Form Time : 17
Empty Form Time : 13
Empty Form Time : 18
Empty Form Time : 17
اتضح ان الليبلات اسرع قليلا من الازرار ولكن الفرق ليس بالكبير ، فهنا قرارك هل تريد التخلي عن شكل الازارار وتأثير الضغط وكل ذلك ام لا
الكود : 
الفورم الرئيسي :
كود :
Public Class Form1

   Dim sw As New Stopwatch
   Sub New()
       sw.Start()
       ' This call is required by the designer.
       InitializeComponent()

       ' Add any initialization after the InitializeComponent() call.

   End Sub

   Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown
       sw.Stop()
       Console.WriteLine("Main Form Time : " & sw.ElapsedMilliseconds)
   End Sub

   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       Dim bf As New buttonsForm
       bf.Show()
   End Sub

   Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
       Dim lf As New LabelsForm
       lf.Show()
   End Sub

   Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
       Dim ef As New EmptyForm
       ef.Show()
   End Sub
End Class

فورم الازرار : 
كود :
Public Class buttonsForm
   Dim sw As New Stopwatch
   Sub New()
       sw.Start()
       ' This call is required by the designer.
       InitializeComponent()

       ' Add any initialization after the InitializeComponent() call.

   End Sub

   Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown
       sw.Stop()
       Console.WriteLine("buttonsForm Time : " & sw.ElapsedMilliseconds)
   End Sub
End Class

فورم الليبلات : 
كود :
Public Class LabelsForm
   Dim sw As New Stopwatch
   Sub New()
       sw.Start()
       ' This call is required by the designer.
       InitializeComponent()

       ' Add any initialization after the InitializeComponent() call.

   End Sub

   Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown
       sw.Stop()
       Console.WriteLine("LabelsForm Time : " & sw.ElapsedMilliseconds)
   End Sub
End Class


الملفات المرفقة
.zip   TestToolsTime.zip (الحجم : 183.3 ك ب / التحميلات : 23)
الرد }}}
#3
أخي أنس
كل الشكر و التقدير و التقييم
لقد أخدت التجربة من وقتك لإفادتنا
فجزاك الله على كل ثانية من وقتك

و أكتفي بإستخدام Button للفارق الصغير
الرد }}}
تم الشكر بواسطة: Anas Mahmoud
#4
كود :
Public Class Form1

  Dim sw As New Stopwatch
  Sub New()
      sw.Start()
      ' This call is required by the designer.
      InitializeComponent()

      ' Add any initialization after the InitializeComponent() call.

  End Sub

ممكن أخي أن أعرف ما دور InitializeComponent   لأني أراه كثيرا ولا أعرف ماذا يفعل

و لماذا تم وضعه في      Sub New()     اللتي لا تحمل أي إسم

الغريب أنه حتى بإزالة InitializeComponent يشتغل البرنامج

هل دالة Sub New() تشتغل قبل Form_Load
الرد }}}
تم الشكر بواسطة:
#5
InitializeComponent  هي الدالة المسئولة عن انشاء و تصميم الادوات في الفورم كما يظهر في وقت التصميم

لو قمت بفتح ملف Form1.Designer.vb مثلا ستجد كيف تقوم بيئة التصميم باضافة الازرار والادوات الى الفورم

   

وبالتالي فهي ضرورية ان يتم استدعائها قبل اي شي في الكود حتى لا تحصل على Null value exception مثلا ان قمت بتغير اي من خصائص الادوات قبل ان يتم انشائها اصلا

اما عن Sub New فهو مشيد الفورم ، اي فورم في النهاية هو كلاس يرث من الكلاس System.Windows.Forms.Form ، واي كلاس له مشيد يتم استدعائة عندما تقوم بانشاء نسخة من هذه الفئة باستخدام الكلمة new 

وهو مهم لاجراء اي عمليات نريد تنفيذها قبل اي شيء ، مثل ال Initialization مثلا للمتغيرات الداخلية وهكذا 

في حالة الفورم هنا مهم انشاء الادوات وتصميمها واضافتها للفورم قبل اي شيء
الرد }}}
تم الشكر بواسطة:



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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم