منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : عندي مشكلة بمقاسات الشاشات ماهو الحل المناسب
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
اهلين حابة اشوف لي حل لمشكلة ال .net  لما اشتغل جهاز معين وانقل البروجكت او المشروع لجهاز اخر ينخرب عندي الديزاين في حل مناسب للمشكلة هاذي لو سمحتو تقدر تفيدوني ؟؟ ومشكورين
اذا كانت المشكلة تكن في حجم الشاشة فقومي بتثبيت حجم العرض و الارتفاع للبرنامج .. عن طريق الخواص MaximumSize و MinimumSize
(10-11-15, 07:54 PM)Mr. DotNet كتب : [ -> ]اذا كانت المشكلة تكن في حجم الشاشة فقومي بتثبيت حجم العرض و الارتفاع للبرنامج .. عن طريق الخواص MaximumSize  و MinimumSize

سوف تظهر مشكلة أخر اذا استخدمت هاتان الخاصيتين وهي عدم ثبات التصميمات إذا كان تستخدم اشكال على الفورم
الحل في الخاصية Anchor
إقتباس :الحل في الخاصية Anchor
يا ريت حد يفيدنا عن خاصية  Anchor لأنها أصلا مش موجودة ضمن خصائص الفورم فى الدوت نت !!!!!!!!!
الحل في انك تستخدم شئ مثل مقياس الرسم لأن الاشياء التي تتأثر ب تغيير أبعاد الشاشة هي الصور و Size و Font وما شابه من مثل هذه الخصائص وطبعا هذه الخواص تؤثر علي اسلوب ظهور الكونترول او الفورم علي شاشة الكمبيوتر بسبب تغير قيمة DPI الخاصة بشاشة الكمبيوتر

حاول يكون لديك مقياس رسم او Scale يكون عبارة عن معدل التغير في Height طول الشاشة علي جهازك و طول الشاشة عند Client و ايضا نفس الشئ بالنسبة للعرض Width و بشرط ان يتم ربط مقياس الرسم هذا بالأبعاد المختلفة لشاشات الكمبيوتر المختلفة .... أيضا ستكون في حاجة الي Delegate او Handler يتم إطلاقه عندما تتغير ابعاد الشاشة و بناء علي هذا تقوم بتغيير ابعاد كل شئ علي الفورم بضربها أو قسمتها علي Scale
PHP كود :
Public Class Form1

    Private Sub Form1_Load
(ByVal sender As System.ObjectByVal e As System.EventArgsHandles MyBase.Load

        
'FormScaleMinimize()
        FormScaleMaximize()

    End Sub

#Region "Form scale"
    Private Sub FormScaleMinimize()
        Me.AutoScaleMode = AutoScaleMode.Font
        For i = Me.Font.Size To 4 Step -1
            Me.Font = New Font(Me.Font.FontFamily, i, Me.Font.Style)
            If Me.Width < Screen.PrimaryScreen.WorkingArea.Width And Me.Height < Screen.PrimaryScreen.WorkingArea.Height Then
                Exit For
            End If
        Next
        Array.ForEach(GetAllControls(Me).ToArray, Sub(ctrl As Control) ctrl.Font = Me.Font)
        If Me.Right > Screen.PrimaryScreen.WorkingArea.Width Or Me.Bottom > Screen.PrimaryScreen.WorkingArea.Height Then
            Me.Location = New Point(0, 0)
        End If
    End Sub
    Private Sub FormScaleMaximize()
        Me.AutoScaleMode = AutoScaleMode.Font
        For i = 4 To 100
            Me.Font = New Font(Me.Font.FontFamily, i, Me.Font.Style)
            If Me.Width > Screen.PrimaryScreen.WorkingArea.Width Or Me.Height > Screen.PrimaryScreen.WorkingArea.Height Then
                Me.Font = New Font(Me.Font.FontFamily, i - 1, Me.Font.Style)
                Exit For
            End If
        Next
        Array.ForEach(GetAllControls(Me).ToArray, Sub(ctrl As Control) ctrl.Font = Me.Font)
        If Me.Right > Screen.PrimaryScreen.WorkingArea.Width Or Me.Bottom > Screen.PrimaryScreen.WorkingArea.Height Then
            Me.Location = New Point(0, 0)
        End If
    End Sub
    Private Function GetAllControls(ByVal control As Control) As IEnumerable(Of Control)
        Dim controls = control.Controls.Cast(Of Control)()
        Return controls.SelectMany(Function(ctrl) GetAllControls(ctrl)).Concat(controls)
    End Function
#End Region



End Class