فروم برنامه نویسی را در گوگل محبوب کنید :
نمایش نتایج: از 1 به 2 از 2
  1. #1
    Junior Member
    تاریخ عضویت
    Jul 2014
    نوشته ها
    2
    تشکر کردن
    0
    تشکر شده 0 بار در 0 پست

    Unhappy مشکل در مقدار دهی background Worker به textbox در فرم

    با سلام خدمت اساتید محترم
    من یک برنامه نوشته ام که با استفاده از background worker و تایمر اطلاعات موجود در textbox های فرم را بروز رسانی می کنم.
    وقتی تایمر اجرا می شود مقدار دهی ها صورت میگیرد اما مقادیر اشتباه وارد textbox ها می شود و در واقع مقادیر جا به جا هستند.
    لطفا بنده را راهنمایی کنید
    کد موجود در تابع elapse از تایمر اجرا شونده:

    کد:
    Protected Sub Timer_Elapsed(sender As Object, e As EventArgs) Handles Timer.Elapsed
     Dim Con As String = ""
            Dim Url As String = ""
            Dim counter As Integer
            Dim oop As New Functions
            Dim dt As DataTable = oop.RetrieveSites
                        counter = 1
                For i = 1 To 16 Step 8
                    Dim bw1 As New BGWorkers
                    Url = dt.Rows(counter - 1)(3).ToString
                    Con = dt.Rows(counter - 1)(4).ToString
                    Dim gp1 As GroupBox = DirectCast(Me.Controls.Find("GroupBox" + counter.ToString, False).FirstOrDefault(), GroupBox)
                    Dim txt1 As TextBox = DirectCast(gp1.Controls.Find("TextBox" + i.ToString, False).FirstOrDefault(), TextBox)
                    Dim txt2 As TextBox = DirectCast(gp1.Controls.Find("TextBox" + (i + 1).ToString, False).FirstOrDefault, TextBox)
                    Dim txt3 As TextBox = DirectCast(gp1.Controls.Find("TextBox" + (i + 2).ToString, False).FirstOrDefault, TextBox)
                    Dim txt4 As TextBox = DirectCast(gp1.Controls.Find("TextBox" + (i + 3).ToString, False).FirstOrDefault, TextBox)
                    Dim txt5 As TextBox = DirectCast(gp1.Controls.Find("TextBox" + (i + 4).ToString, False).FirstOrDefault, TextBox)
                    Dim txt6 As TextBox = DirectCast(gp1.Controls.Find("TextBox" + (i + 5).ToString, False).FirstOrDefault, TextBox)
                    Dim txt7 As TextBox = DirectCast(gp1.Controls.Find("TextBox" + (i + 6).ToString, False).FirstOrDefault, TextBox)
                    Dim txt8 As TextBox = DirectCast(gp1.Controls.Find("TextBox" + (i + 7).ToString, False).FirstOrDefault, TextBox)
                    bw1.Main(txt1, txt2, txt3, txt4, txt5, txt6, txt7, txt8, Con, Url)
                    counter += 1
                Next
    End Sub


    موضوعات مشابه:

  2. #2
    Junior Member
    تاریخ عضویت
    Jul 2014
    نوشته ها
    2
    تشکر کردن
    0
    تشکر شده 0 بار در 0 پست
    دوستان خودم جواب را پیدا کردم.
    مشکل در نداشتن تاخیر (delay) بود که باید در حلقه یک تاخیر 1 تا 2 ثانیه ای قرار دهیم.

    کد:
     For i = 1 To (ToolStripDropDownButton1.DropDownItems.Count * 8) Step 8
                    Dim bw1 As New BGWorkers
                    Url = dt.Rows(counter - 1)(3).ToString
                    Con = dt.Rows(counter - 1)(4).ToString
                    Dim GB1 As GroupBox = DirectCast(Me.Controls.Find("GroupBox" + counter.ToString, False).FirstOrDefault(), GroupBox)
                    Dim txt1 As TextBox = DirectCast(GB1.Controls.Find("TextBox" + i.ToString, False).FirstOrDefault(), TextBox)
                    Dim txt2 As TextBox = DirectCast(GB1.Controls.Find("TextBox" + (i + 1).ToString, False).FirstOrDefault, TextBox)
                    Dim txt3 As TextBox = DirectCast(GB1.Controls.Find("TextBox" + (i + 2).ToString, False).FirstOrDefault, TextBox)
                    Dim txt4 As TextBox = DirectCast(GB1.Controls.Find("TextBox" + (i + 3).ToString, False).FirstOrDefault, TextBox)
                    Dim txt5 As TextBox = DirectCast(GB1.Controls.Find("TextBox" + (i + 4).ToString, False).FirstOrDefault, TextBox)
                    Dim txt6 As TextBox = DirectCast(GB1.Controls.Find("TextBox" + (i + 5).ToString, False).FirstOrDefault, TextBox)
                    Dim txt7 As TextBox = DirectCast(GB1.Controls.Find("TextBox" + (i + 6).ToString, False).FirstOrDefault, TextBox)
                    Dim txt8 As TextBox = DirectCast(GB1.Controls.Find("TextBox" + (i + 7).ToString, False).FirstOrDefault, TextBox)
                    bw1.Main(txt1, txt2, txt3, txt4, txt5, txt6, txt7, txt8, Con, Url)
                    counter += 1
                    Threading.Thread.Sleep(1000)
                Next




 

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •