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

نسخة كاملة : خطأ في عرض اليوم الموافق للتاريخ
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
لا أدري ما هــو الخطأ في هذا الكود ؟!!!
عندما اختار التاريـخ من DateTimePicker1 المفروض يعرض من ComboBox1 اليوم الموافق للتاريخ (السبت - الأحد ..... )
ولكن اليوم يتم عرضه خطأ.
فأرجــو تعديـل الكود

كود :
Private Sub DateTimePicker1_ValueChanged(sender As Object, e As EventArgs) Handles DateTimePicker1.ValueChanged
        Geet4(DateTimePicker1.Value.DayOfWeek)
        TextBox1.Text = ComboBox1.Text

    End Sub

    Public Sub Geet4(x As Integer)
        If x > ComboBox1.SelectedIndex + 1 Then ComboBox1.SelectedIndex = 0 Else ComboBox1.SelectedIndex = x

    End Sub
مرحبا ..

جرب التعديل التالي :
كود :
    Private Sub DateTimePicker1_ValueChanged(sender As Object, e As EventArgs) Handles DateTimePicker1.ValueChanged
        SetDayOfWeek(DateTimePicker1.Value.DayOfWeek)
        TextBox1.Text = ComboBox1.Text
    End Sub

    Public Sub SetDayOfWeek(day As DayOfWeek)
        Dim daysOfWeek As String() = {"الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت"}
        ComboBox1.Items.Clear()
        ComboBox1.Items.AddRange(daysOfWeek)
        ComboBox1.SelectedIndex = Array.IndexOf(daysOfWeek, daysOfWeek(day))
    End Sub
يبدو أن المشكلة تكمن في كيفية تعيين القيمة المناسبة في الـ ComboBox1 بناءً على اليوم الذي يتم اختياره في DateTimePicker1. لنقم بإجراء بعض التعديلات على الكود لتصحيح المشكلة.أولاً، تأكد أن ComboBox1 يحتوي على عناصر الأيام بشكل صحيح (السبت، الأحد، ...). سنفترض أن ComboBox1 يحتوي على الأيام بترتيب صحيح من 0 إلى 6، حيث 0 يمثل الأحد، 1 يمثل الاثنين، وهكذا حتى 6 الذي يمثل السبت.ثانياً، سنقوم بتعديل دالة Geet4 لتعيين العنصر الصحيح في ComboBox1 مباشرة بناءً على اليوم الذي يتم اختياره من DateTimePicker1.إليك الكود المعدل
PHP كود :
Private Sub DateTimePicker1_ValueChanged(sender As ObjectAs EventArgsHandles DateTimePicker1.ValueChanged
    
' احصل على اليوم الموافق للتاريخ المحدد في DateTimePicker1
    Dim dayOfWeek As Integer = DateTimePicker1.Value.DayOfWeek

    ' 
قم بتعيين اليوم الموافق في ComboBox1
    ComboBox1
.SelectedIndex dayOfWeek

    
' قم بتحديث TextBox1 بالنص الموجود في ComboBox1
    TextBox1.Text = ComboBox1.Text
End Sub 
لا حاجة لاستخدام دالة Geet4 في هذه الحالة، لأن تعيين العنصر المناسب في ComboBox1 يمكن تحقيقه مباشرة داخل الحدث DateTimePicker1_ValueChanged.تأكد أن ComboBox1 يحتوي على العناصر بالترتيب الصحيح (الأحد، الاثنين، ...، السبت). إذا كان الترتيب في ComboBox1 مختلفًا، عليك تعديل الكود ليتناسب مع الترتيب الموجود.على سبيل المثال، إذا كان الترتيب في ComboBox1 يبدأ بالسبت وينتهي بالجمعة، يمكنك تعديل الكود كالتالي
PHP كود :
Private Sub DateTimePicker1_ValueChanged(sender As ObjectAs EventArgsHandles DateTimePicker1.ValueChanged
    
' احصل على اليوم الموافق للتاريخ المحدد في DateTimePicker1
    Dim dayOfWeek As Integer = DateTimePicker1.Value.DayOfWeek

    ' 
تعديل قيمة اليوم للحصول على الترتيب الصحيح في ComboBox1
    Dim comboBoxIndex 
As Integer = (dayOfWeek 1Mod 7

    
' قم بتعيين اليوم الموافق في ComboBox1
    ComboBox1.SelectedIndex = comboBoxIndex

    ' 
قم بتحديث TextBox1 بالنص الموجود في ComboBox1
    TextBox1
.Text ComboBox1.Text
End 



بهذا الشكل، يجب أن يتم عرض اليوم الصحيح في ComboBox1 بناءً على التاريخ الذي يتم اختياره في
(29-05-24, 08:20 AM)أبو خالد الشكري كتب : [ -> ]مرحبا ..

جرب التعديل التالي :
كود :
    Private Sub DateTimePicker1_ValueChanged(sender As Object, e As EventArgs) Handles DateTimePicker1.ValueChanged
        SetDayOfWeek(DateTimePicker1.Value.DayOfWeek)
        TextBox1.Text = ComboBox1.Text
    End Sub

    Public Sub SetDayOfWeek(day As DayOfWeek)
        Dim daysOfWeek As String() = {"الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت"}
        ComboBox1.Items.Clear()
        ComboBox1.Items.AddRange(daysOfWeek)
        ComboBox1.SelectedIndex = Array.IndexOf(daysOfWeek, daysOfWeek(day))
    End Sub

بارك الله فيك أخي أبا خالد الشكري الكود شغال 100%

(29-05-24, 12:18 PM)العتيق كتب : [ -> ]يبدو أن المشكلة تكمن في كيفية تعيين القيمة المناسبة في الـ ComboBox1 بناءً على اليوم الذي يتم اختياره في DateTimePicker1. لنقم بإجراء بعض التعديلات على الكود لتصحيح المشكلة.أولاً، تأكد أن ComboBox1 يحتوي على عناصر الأيام بشكل صحيح (السبت، الأحد، ...). سنفترض أن ComboBox1 يحتوي على الأيام بترتيب صحيح من 0 إلى 6، حيث 0 يمثل الأحد، 1 يمثل الاثنين، وهكذا حتى 6 الذي يمثل السبت.ثانياً، سنقوم بتعديل دالة Geet4 لتعيين العنصر الصحيح في ComboBox1 مباشرة بناءً على اليوم الذي يتم اختياره من DateTimePicker1.إليك الكود المعدل
PHP كود :
Private Sub DateTimePicker1_ValueChanged(sender As ObjectAs EventArgsHandles DateTimePicker1.ValueChanged
    
' احصل على اليوم الموافق للتاريخ المحدد في DateTimePicker1
    Dim dayOfWeek As Integer = DateTimePicker1.Value.DayOfWeek

    ' 
قم بتعيين اليوم الموافق في ComboBox1
    ComboBox1
.SelectedIndex dayOfWeek

    
' قم بتحديث TextBox1 بالنص الموجود في ComboBox1
    TextBox1.Text = ComboBox1.Text
End Sub 
لا حاجة لاستخدام دالة Geet4 في هذه الحالة، لأن تعيين العنصر المناسب في ComboBox1 يمكن تحقيقه مباشرة داخل الحدث DateTimePicker1_ValueChanged.تأكد أن ComboBox1 يحتوي على العناصر بالترتيب الصحيح (الأحد، الاثنين، ...، السبت). إذا كان الترتيب في ComboBox1 مختلفًا، عليك تعديل الكود ليتناسب مع الترتيب الموجود.على سبيل المثال، إذا كان الترتيب في ComboBox1 يبدأ بالسبت وينتهي بالجمعة، يمكنك تعديل الكود كالتالي
PHP كود :
Private Sub DateTimePicker1_ValueChanged(sender As ObjectAs EventArgsHandles DateTimePicker1.ValueChanged
    
' احصل على اليوم الموافق للتاريخ المحدد في DateTimePicker1
    Dim dayOfWeek As Integer = DateTimePicker1.Value.DayOfWeek

    ' 
تعديل قيمة اليوم للحصول على الترتيب الصحيح في ComboBox1
    Dim comboBoxIndex 
As Integer = (dayOfWeek 1Mod 7

    
' قم بتعيين اليوم الموافق في ComboBox1
    ComboBox1.SelectedIndex = comboBoxIndex

    ' 
قم بتحديث TextBox1 بالنص الموجود في ComboBox1
    TextBox1
.Text ComboBox1.Text
End 



بهذا الشكل، يجب أن يتم عرض اليوم الصحيح في ComboBox1 بناءً على التاريخ الذي يتم اختياره في

جزاك الله كلّ خير أخي العتيق فهو كودُ مختصر ُ وقد حققَ المطلوبَ