السلام عليكم
انا صممت برنامج ع VB.Net حين تقوم بنقل البرنامج ع جهاز اخر تظهر الفورمات وكل محتويات الفورم والبرنامج بحجم كبير ونصفها مختفي من الشاشة
مع العلم ان مقاس شاشتي هو ١٩ انش عريض والشاشة التي نقلت البرنامج اليها ١٩ انش بشكل مربع وليس مستطيل او عريض هل يوجد حل
يجب أن تعلم أنه في اي نظام تشغيل فإن الفورم وفي في حالة التكبير ليغطي الشاشة دائما ما يفقد البرواز الحارجي للفورم أيضا يجب أن تضع في اعتبارك انه لا يغطي كل الشاشة بل يغطي الجزء الذي يعلو او يجاور شريط المهام الخاص بالويندوز نفسه و عموما لضبط الفورم لكي يعمل مع اي شاشة كمبيوتر عليك أن تحسب أبعاد الشاشة و تضبط الفورم بناء علي تلك الأبعاد مع ضبط خواص الكونترول الموجودة في الفورم مثل خاصية Docking, Padding, Anchor, Margins
عفوا ولكن كيف احسب ابعاد الشاشة وكيف اضبط الفورم بناء ع تلك الابعاد مود مثلا وشكرا لك مقدما
فيه حالتين للحصول علي ابعاد الشاشة
الحالة الأولي أنك تحسب WorkingArea
و الدالة التالية توضح كيفية حساب WorkingArea
كود :
Public Function ScreenToWorkingRectangle() As System.Drawing.Rectangle
Dim rect As System.Drawing.Rectangle = CType(Nothing, System.Drawing.Rectangle)
Dim displayDevices As System.Windows.Forms.Screen() = System.Windows.Forms.Screen.AllScreens
For i As Integer = 0 To displayDevices.Length - 1
Dim currentDisplayDevice As System.Windows.Forms.Screen = displayDevices(i)
rect = System.Drawing.Rectangle.Union(rect, currentDisplayDevice.WorkingArea)
Next
Return rect
End Function
الحالة الثانية و هي أن تحسب ابعاد الشاشة كلها ٍScreenBounds
و الدالة التالية توضح كيف تحسب ذلك
كود :
Public Function ScreenToRectangle() As System.Drawing.Rectangle
Dim rect As System.Drawing.Rectangle = CType(Nothing, System.Drawing.Rectangle)
Dim displayDevices As System.Windows.Forms.Screen() = System.Windows.Forms.Screen.AllScreens
For i As Integer = 0 To displayDevices.Length - 1
Dim currentDisplayDevice As System.Windows.Forms.Screen = displayDevices(i)
rect = System.Drawing.Rectangle.Union(rect, currentDisplayDevice.Bounds)
Next
Return rect
End Function
الأن كيف تحسب ابعاد الفورم ليملأ WorkingArea مثلا
يجب أن تضع في الاعتبار ان حواف الفورم الخارجية سمكها غالبا قيمته تساوي 8
مثلا في الحدث Load الخاص بالفورم اكتب الكود ب الشكل التالي
كود :
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim workingArea As Rectangle = ScreenToWorkingRectangle()
Me.Location = New Point(workingArea.X - 8, workingArea.Y - 8)
Me.Size = New Size(workingArea.Width + 16, workingArea.Height + 16)
End Sub
أتمني تكون الفكرة اصبحت أكثر وضوحا لك