بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
معي مشكلة مع تغيير نص الأداة ، كلما أحاول أن أقوم بتغيير نص الزر قبل إجراء مهمة لا يقوم الفيجوال بتغيرر الزر لا أدري لماذا
مثال
كود :
Public Class Form1
Dim s(1000000) As String
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Button1.Text = "Please wait"
For i As Integer = 0 To UBound(s)
s(i) = i
Next
Button1.Text = "Button1"
MsgBox("DONE")
End Sub
End Class
بينما إذا قمت بتغييره بدون أكواد بأسفل نص التغغير يتغير النص
أخي الكريم
السبب في عدم ظهور النص هو انشغال البرنامج داخل الحلقة التكرارية ( ما شاء الله مليون

)
فالحل هو وضع الجملة التالية إما بعد جملة تغيير نص الأداة مباشرة إذا كنت لا تحتاج إلى تنفيذ أحداث أخرى بعد ذلك إلى نهاية الحلقة
أو داخل الحلقة التكرارية
ولكن سيتأخر البرنامج في هذه الحالة لأنه ومع كل مرة يمر فيها بهذه الجملة سيقوم بفحص ما إذا هناك أحداث جديدة
هذا هو الكود
كود :
Application.DoEvents()
شكرا لك أخي sooriaty03
إقتباس :إما بعد جملة تغيير نص الأداة مباشرة إذا كنت لا تحتاج إلى تنفيذ أحداث أخرى بعد ذلك إلى نهاية الحلقة
ماذا تقصد أخي بهذه الجملة أنا كتبت Application.DoEvents() بعد جملة تغيير نص الأداة فتغير النص ولم تأثر على أي من الأكواد
فلو سمحت هل من الممكن أن تشرح لنا جملة Application.DoEvents() لأني أول مره أستخدمها
هذا الأمر هو طلب إلى البرنامج بالقيام بأي أمر يطلب منه حتى أثناء انشغاله بتنفيذ أوامر أخرى
كما في برنامجك
فأنت طلبت تغيير نص الزر ثم طلبت إلى البرنامج بعمل حلقة تكرارية لمليون مرة فلم يظهر النص الذي غيرته لانشغال البرنامج داخل الحلقة
وهنا يأتي دور الأمر الذي أخبرتك به حيث سيقوم البرنامج بالانتظار حتى يتم تنفيذ جميع ما طلب منه ثم يتابع
والأفضل في كل حلقة تكرارية طويلة تقوم بوضع الكود حتي يبقى لدى البرنامج القدرة على الاستجابة لأي أوامر أخرى
بالتوفيق