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

نسخة كاملة : ما الخطاء فى هذا الكود
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم ورحمة الله

كود :
[color=#0000FF]Public[/color] [color=#0000FF]Class[/color] [color=#2B91AF]Form[/color]
    [color=#0000FF]Private[/color] [color=#0000FF]Sub[/color][color=#000000] Button1_Click(sender [/color][color=#0000FF]As[/color] [color=#0000FF]Object[/color][color=#000000], e [/color][color=#0000FF]As[/color] [color=#2B91AF]EventArgs[/color][color=#000000]) [/color][color=#0000FF]Handles[/color][color=#000000] Button1.Click[/color]
[color=#000000]        BackgroundWorker1.RunWorkerAsync()[/color]
    [color=#0000FF]End[/color] [color=#0000FF]Sub[/color]

    [color=#0000FF]Private[/color] [color=#0000FF]Sub[/color][color=#000000] BackgroundWorker1_DoWork(sender [/color][color=#0000FF]As[/color] [color=#0000FF]Object[/color][color=#000000], e [/color][color=#0000FF]As[/color][color=#000000] System.ComponentModel.[/color][color=#2B91AF]DoWorkEventArgs[/color][color=#000000]) [/color][color=#0000FF]Handles[/color][color=#000000] BackgroundWorker1.DoWork[/color]
        [color=#0000FF]For[/color][color=#000000] a [/color][color=#0000FF]As[/color] [color=#0000FF]Integer[/color][color=#000000] = 1 [/color][color=#0000FF]To[/color][color=#000000] 1000[/color]
            [color=#0000FF]Dim[/color][color=#000000] lbl [/color][color=#0000FF]As[/color] [color=#0000FF]New[/color] [color=#2B91AF]Label[/color]
[color=#000000]            lbl.Text = [/color][color=#A31515]"kkkkkkkkkkkkkkkkk_"[/color][color=#000000] & a.ToString[/color]
[color=#000000]            FlowLayoutPanel1.Controls.Add(lbl)[/color]
        [color=#0000FF]Next[/color]
    [color=#0000FF]End[/color] [color=#0000FF]Sub[/color]

[color=#0000FF]End[/color] [color=#0000FF]Class[/color]



يوجد سطر يحل الاشكال لكن ليس محبذ
كود :
Control.CheckForIllegalCrossThreadCalls = False
جزاك الله خير اخى وحبيبى سعود
مش فاهم الكود ومش فاهم تقصد ايه
كود :
[color=#0000FF]Public[/color] [color=#0000FF]Class[/color] [color=#2B91AF]Form1[/color]
    [color=#0000FF]Private[/color] [color=#0000FF]Delegate[/color] [color=#0000FF]Sub[/color] [color=#2B91AF]AddControlSafe[/color][color=#000000](c [/color][color=#0000FF]As[/color] [color=#2B91AF]Control[/color][color=#000000])[/color]

    [color=#0000FF]Private[/color] [color=#0000FF]Sub[/color][color=#000000] Form1_Load(sender [/color][color=#0000FF]As[/color] [color=#0000FF]Object[/color][color=#000000], e [/color][color=#0000FF]As[/color] [color=#2B91AF]EventArgs[/color][color=#000000]) [/color][color=#0000FF]Handles[/color] [color=#0000FF]MyBase[/color][color=#000000].Load[/color]
[color=#000000]        FlowLayoutPanel1.AutoScroll = [/color][color=#0000FF]True[/color]
[color=#000000]        BGW.RunWorkerAsync()[/color]
    [color=#0000FF]End[/color] [color=#0000FF]Sub[/color]

    [color=#0000FF]Private[/color] [color=#0000FF]Sub[/color][color=#000000] BGW_DoWork(sender [/color][color=#0000FF]As[/color] [color=#0000FF]Object[/color][color=#000000], e [/color][color=#0000FF]As[/color] [color=#2B91AF]DoWorkEventArgs[/color][color=#000000]) [/color][color=#0000FF]Handles[/color][color=#000000] BGW.DoWork[/color]
        [color=#0000FF]Dim[/color][color=#000000] [delegate] [/color][color=#0000FF]As[/color] [color=#0000FF]New[/color] [color=#2B91AF]AddControlSafe[/color][color=#000000]([/color][color=#0000FF]Sub[/color][color=#000000](c [/color][color=#0000FF]As[/color] [color=#2B91AF]Control[/color][color=#000000])[/color]
[color=#000000]                                                 FlowLayoutPanel1.Controls.Add(c)[/color]
                                             [color=#0000FF]End[/color] [color=#0000FF]Sub[/color][color=#000000])[/color]
        [color=#0000FF]For[/color][color=#000000] a [/color][color=#0000FF]As[/color] [color=#0000FF]Integer[/color][color=#000000] = 1 [/color][color=#0000FF]To[/color][color=#000000] 1000[/color]
            [color=#0000FF]Dim[/color][color=#000000] lbl [/color][color=#0000FF]As[/color] [color=#0000FF]New[/color] [color=#2B91AF]Label[/color]
[color=#000000]            lbl.Text = [/color][color=#A31515]"kkkk_"[/color][color=#000000] & a[/color]
[color=#000000]            Invoke([delegate], lbl)[/color]
        [color=#0000FF]Next[/color]
    [color=#0000FF]End[/color] [color=#0000FF]Sub[/color]
[color=#0000FF]End[/color] [color=#0000FF]Class[/color]
جزاك الله خير اخى احمد لاكن هذا الكود جديد عليا فعلا
ارجو من حدرتك شرح الاسطر التى تسبقها علامة ( " )

كود :
[color=#0000FF]Public[/color] [color=#0000FF]Class[/color] [color=#2B91AF]Form1[/color]

    [color=#008000]'[/color]
    [color=#0000FF]Private[/color] [color=#0000FF]Delegate[/color] [color=#0000FF]Sub[/color] [color=#2B91AF]AddControlSafe[/color][color=#000000](c [/color][color=#0000FF]As[/color] [color=#2B91AF]Control[/color][color=#000000])[/color]

    [color=#0000FF]Private[/color] [color=#0000FF]Sub[/color][color=#000000] Form1_Load(sender [/color][color=#0000FF]As[/color] [color=#0000FF]Object[/color][color=#000000], e [/color][color=#0000FF]As[/color] [color=#2B91AF]EventArgs[/color][color=#000000]) [/color][color=#0000FF]Handles[/color] [color=#0000FF]MyBase[/color][color=#000000].Load[/color]
[color=#000000]        FlowLayoutPanel1.AutoScroll = [/color][color=#0000FF]True[/color]
[color=#000000]        BGW.RunWorkerAsync()[/color]
    [color=#0000FF]End[/color] [color=#0000FF]Sub[/color]

    [color=#0000FF]Private[/color] [color=#0000FF]Sub[/color][color=#000000] BGW_DoWork(sender [/color][color=#0000FF]As[/color] [color=#0000FF]Object[/color][color=#000000], e [/color][color=#0000FF]As[/color][color=#000000] System.ComponentModel.[/color][color=#2B91AF]DoWorkEventArgs[/color][color=#000000]) [/color][color=#0000FF]Handles[/color][color=#000000] BGW.DoWork[/color]

        [color=#008000]'[/color]
        [color=#0000FF]Dim[/color][color=#000000] [delegate] [/color][color=#0000FF]As[/color] [color=#0000FF]New[/color] [color=#2B91AF]AddControlSafe[/color][color=#000000]([/color][color=#0000FF]Sub[/color][color=#000000](c [/color][color=#0000FF]As[/color] [color=#2B91AF]Control[/color][color=#000000])[/color]
[color=#000000]                                                 FlowLayoutPanel1.Controls.Add(c)[/color]
                                             [color=#0000FF]End[/color] [color=#0000FF]Sub[/color][color=#000000])[/color]

        [color=#0000FF]For[/color][color=#000000] a [/color][color=#0000FF]As[/color] [color=#0000FF]Integer[/color][color=#000000] = 1 [/color][color=#0000FF]To[/color][color=#000000] 1000[/color]
            [color=#0000FF]Dim[/color][color=#000000] lbl [/color][color=#0000FF]As[/color] [color=#0000FF]New[/color] [color=#2B91AF]Label[/color]
[color=#000000]            lbl.Text = [/color][color=#A31515]"kkkk_"[/color][color=#000000] & a[/color]
            [color=#008000]'[/color]
[color=#000000]            Invoke([delegate], lbl)[/color]
        [color=#0000FF]Next[/color]
    [color=#0000FF]End[/color] [color=#0000FF]Sub[/color]
[color=#0000FF]End[/color] [color=#0000FF]Class[/color]
عندما تريد الوصول الى الفورم من thread اخر

لغات الدوت نت تمنع ذلك لاسباب ...... نسيت ههههه


المهم

عند اي كود تستخدمه للوصول الى الفورم

استخدم التفويض + invoke

طريقتي فيها لف ودوران شوي

ولذلك استعمل طريقة اخي سجاد :

PHP كود :
If (Me.InvokeRequiredThen
            Me
.Invoke(New MethodInvoker(Sub()
                                            
FlowLayoutPanel1.Controls.Add(lbl)
                                        
End Sub))
        
End If 

خلاص انحلت
اسف اخي ahmed hussien لم ارى ردك
الشاكي لله كتب :اسف اخي ahmed hussien لم ارى ردك

لا توجد مشكلة

ali.alfoly كتب :جزاك الله خير اخى احمد لاكن هذا الكود جديد عليا فعلا
ارجو من حدرتك شرح الاسطر التى تسبقها علامة ( " )

اسف اخى ليس لدى معلومات وافية عن Delegates & MethodInvoker
انا استخدمها عندما تظهر لي رسالة مثل التى ظهرت لك

لذلك ارجوا من احد الأخوة ان يتكرم بوضع بشرح عنها
لايمكنك التعامل مع الCotrols الا من الThread الذي أنشأها

فعندما تستخدم background worker فإنك تستخدم simi-thread

وبطيعة الحالة سيتم منعك من التعامل مع الادوات لأنك لم تنشأها من الsimi-thread

لايوجد سبب واضح لفعل لمنع المستخدم من الوصول الى الادوات

ولكن مايكروسوفت تحب الsafty ، فقررت عدم السماح لأي ثريد بالوصول الى الادوات المنشئة في ثريد اخر (ربما لاجل التنظيم في stuck تنفيذ الاوامر ..)

وهكذا لايمكنك الوصول لها إلا باستعمال الاستدعاء المباشر (invoke)

فهو يقوم بتنفيذ الكود على الاداة دون نقلها الى مكدسة الترتيب

فالكود العادي دون invoke (مثلا تغيير خلفية الفورم) ، لايتم تنفيذه مباشرة

بل يتم نقله الى مكدسة خاصة منظمة تعمل على تنفيذ هذا الكود عندما يتم يحين دوره


اعتقد ان invoke تستعمل دالة API المسمى sendMessage لإرسال الكود

ولكن وجب التنبيه على ضرورة استخدام invokeRequired قبل كود invoke للتأكد

لأن هناك مشكلة قد تحدث عندما تستخدم invoke وانت لست بحاجة له
جزاك الله خير
توضيح وافى جدا

طيب انا عملت UserControl1 ووضعت عليه مجموعة من الادوات منها RichTextBox1

وقمت بعمل نسخ منها فى التكرار يظهر خطاء

كود :
[color=#0000FF]Private[/color] [color=#0000FF]Sub[/color][color=#000000] BGW_DoWork(sender [/color][color=#0000FF]As[/color] [color=#0000FF]Object[/color][color=#000000], e [/color][color=#0000FF]As[/color][color=#000000] System.ComponentModel.[/color][color=#2B91AF]DoWorkEventArgs[/color][color=#000000]) [/color][color=#0000FF]Handles[/color][color=#000000] BGW.DoWork[/color]

        [color=#0000FF]For[/color][color=#000000] a [/color][color=#0000FF]As[/color] [color=#0000FF]Integer[/color][color=#000000] = 1 [/color][color=#0000FF]To[/color][color=#000000] 1000[/color]
            [color=#0000FF]Dim[/color][color=#000000] Usr [/color][color=#0000FF]As[/color] [color=#0000FF]New[/color] [color=#2B91AF]UserControl1[/color]
[color=#000000]            Usr.RichTextBox1.Rtf = [/color][color=#A31515]"kkkk_"[/color][color=#000000] & a[/color]
            [color=#008000]'[/color]

            [color=#0000FF]If[/color][color=#000000] ([/color][color=#0000FF]Me[/color][color=#000000].InvokeRequired) [/color][color=#0000FF]Then[/color]
                [color=#0000FF]Me[/color][color=#000000].Invoke([/color][color=#0000FF]New[/color] [color=#2B91AF]MethodInvoker[/color][color=#000000]([/color][color=#0000FF]Sub[/color][color=#000000]()[/color]
[color=#000000]                                                FlowLayoutPanel1.Controls.Add(Usr)[/color]
                                            [color=#0000FF]End[/color] [color=#0000FF]Sub[/color][color=#000000]))[/color]
            [color=#0000FF]End[/color] [color=#0000FF]If[/color]
        [color=#0000FF]Next[/color]

    [color=#0000FF]End[/color] [color=#0000FF]Sub[/color]

الصفحات : 1 2