الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكله بسيطه حيرتني

بدأه الشرق الاوسط في 31 ديسمبر 2008 · 7 رد · 926 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

لدي مشكله في تتابع تنفيذ اوامر تغيير النص الخاص ب Label1 مع انني وضعت امر تاخير لمدة ثانيه بين كل امر ولكن مع الاسف بعد مرور الوقت لا تضهر الكلمه الاولى والثانيه welcom to وفجأة تظهر العباره الاخيره وهي Arab Team 2000 وكان البرنامج تجاهل الخطوتين السابقتين وهذا هو الكود البرمجي كامل:

Imports System.Threading

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Me.Label1.Text = "Welcome"

Thread.Sleep(1000)
Me.Label1.Text = "To"

Thread.Sleep(1000)
Me.Label1.Text = "Arab Team 2000"

End Sub
End Class

فهل هناك خطأ في اسلوبي لكتابه الكود البرمجي ام ان هناك طريقه افضل من هذه وجزاكم الله خيرا

تم تعديل هذه المشاركة بواسطة الشرق الاوسط في 31 ديسمبر 2008 في 14:17

لايأس مع الحياة ولاحياة مع اليأس

#2

مرحباً !.

اعتقد أن استخدام Timer سيعطي نتيجة أفضل .

مثال :

Public Class Form1

Private WithEvents Tmr As New Timer

Private TextIndex As Integer = 0

Private Sub Form1_Load(Byval Sender As System.Object, Byval E As System.EventARgs ) Handles MyBase.Load

Tmr.Interval = 1000

Tmr.Enabled = True

End Sub

Private Sub Tmr_Tick(Byval Sender As System.Object, BYval E As System.EventArgs ) Handles Tmr.Tick

Select Case TextIndex

Case 0

Label1.Text = "Welcome"

Case 1

Label1.Text = "To"

Case 3

Label1.Text = "Arab Team 200"

End Select

TextIndex += 1

If TextIndex > 3 Then TextIndex = 0

End Sub

End Class

تم تعديل هذه المشاركة بواسطة Bashar Rabat في 31 ديسمبر 2008 في 14:26

The important thing is not so much

that every child should be taught,

as that every child should be given the wish to learn.

#3

اخي Bashar Rabat

جربت الكود فعلا اعتقادك في محله

حل ممتاز جدا

بارك الله فيك

لايأس مع الحياة ولاحياة مع اليأس

#4

استخدام الـ Thread.Sleep يجمد التطبيق عند استخدامه الا في حالة واحدة وهي : تضمين العملية ( Threading.Thread.Sleep ) في Threading.Thread .

المثال التالي يعمل لكن لديك حل أفضل وهو استخدام الـ Timer لذا ليس عليك استخدامه الأن .

 

Imports [color= #990000;]System[color= #339933;].Threading

 

[color= #000000; font-weight: bold;]Public [color= #000000; font-weight: bold;]Class Form1

[color= #000000; font-weight: bold;]Private Delegate Sub SetText[color= #009900;](Byval NText [color= #b1b100;]As String [color= #009900;])

[color= #000000; font-weight: bold;]Private ToSetText [color= #b1b100;]As [color= #000000; font-weight: bold;]New SetText[color= #009900;]( AddressOf TheMainSub [color= #009900;]) 

 

[color= #000000; font-weight: bold;]Private Sub TheMainSub[color= #009900;]( Byval NText [color= #b1b100;]As String [color= #009900;])

Label1[color= #339933;].Text [color= #339933;]= NText

[color= #990000;]End Sub

 

[color= #000000; font-weight: bold;]Private Sub Button1_Click[color= #009900;](Byval Sender [color= #b1b100;]As [color= #990000;]System[color= #339933;].Object[color= #339933;], Byval E [color= #b1b100;]AS [color= #990000;]System[color= #339933;].EventArgs [color= #009900;]) Handles 
Button1[color= #339933;].Click

Dim MyThread [color= #b1b100;]As [color= #000000; font-weight: bold;]New Thread[color= #009900;]( AddressOf Read [color= #009900;]) 

MyThread[color= #339933;].Priority [color= #339933;]= Threading[color= #339933;].ThreadPriority[color= #339933;].BelowNormal

MyThread[color= #339933;].Start[color= #009900;]([color= #009900;])

[color= #990000;]End Sub

 

Sub Read[color= #009900;]([color= #009900;])

Invoke[color= #009900;]( ToSetText [color= #339933;], [color= #0000ff;]"Welcome" [color= #009900;])

Thread[color= #339933;].[color= #990000;]Sleep[color= #009900;]( [color= #cc66cc;]1000 [color= #009900;])

Invoke[color= #009900;]( ToSetText [color= #339933;], [color= #0000ff;]"To" [color= #009900;])

Thread[color= #339933;].[color= #990000;]Sleep[color= #009900;]( [color= #cc66cc;]1000 [color= #009900;])

Invoke[color= #009900;]( ToSetText [color= #339933;], [color= #0000ff;]"Arab Team 2000 " [color= #009900;])

[color= #990000;]End Sub

 

[color= #990000;]End [color= #000000; font-weight: bold;]Class

تم تعديل هذه المشاركة بواسطة Bashar Rabat في 1 يناير 2009 في 13:28

The important thing is not so much

that every child should be taught,

as that every child should be given the wish to learn.

#5

بارك الله فيك يا اخ بشار

وهذه معلومه جديده وجميله استفيدها من علمكم جعلها الله في موازين حسناتك ونفع بك

مشكور يا اخي

لايأس مع الحياة ولاحياة مع اليأس

#6

سلام عليكم

يمكنك استخدام الداله Application.DoEvents()

للحصول علي تحديث لشكل الفورم !

			label1.Text = "1";
			Application.DoEvents();
			Thread.Sleep(1000);
			label1.Text = "2";
			Application.DoEvents();
			Thread.Sleep(1000);
			label1.Text = "3";

سلام

#7
net master كتب:

سلام عليكم

يمكنك استخدام الداله Application.DoEvents()

للحصول علي تحديث لشكل الفورم !

			label1.Text = "1";
			Application.DoEvents();
			Thread.Sleep(1000);
			label1.Text = "2";
			Application.DoEvents();
			Thread.Sleep(1000);
			label1.Text = "3";

سلام

بارك الله فيك اخى الكريم

هذا الكود Application.DoEvents كنت ابحث عن مثلة من زمن

لقد حل لى مشكلة كبيرة مع Thread

شكرا لك اخى جزاك الله خيرا

#8

السلام عليكم ورحمة الله

الكود صحيح لكن العرض أسرع من المطلوب , جرب الكود التالي

Imports System.Threading

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Me.Label1.Text = "Welcome"
        Me.Label1.Refresh()
        Thread.Sleep(2000)
        Me.Label1.Text = "To"
        Me.Label1.Refresh()
        Thread.Sleep(1000)
        Me.Label1.Refresh()
        Me.Label1.Text = "Arab Team 2000"

    End Sub
End Class

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…