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

نسخة كاملة : كيف اصل لقيمة textbox1.textlength من مسار مختلف
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
كود :
public new void ScrollToCaret() {
            if(InvokeRequired) {
                Invoke(new MethodInvoker(() => base.ScrollToCaret()));
                return;
            }
            base.ScrollToCaret();
        }

اخواني الاعزاء
ادري لمواقع التحويل لكن الكود ينقصه اسم الاداة وهو txtoutput
حاولت التعديل بعد التحويل ولم ينفع
هذا حتى اتمكن من الوصول الى قيمة الاداة من الثريد
مثلا خاصية text نتعامل معها هكذا
كود :
Sub fill_txtoutput_txt(ByVal txt As String)
        If txtoutput.InvokeRequired Then
            txtoutput.Invoke(New Action(Of String)(AddressOf fill_txtoutput_txt), txt)
        Else
            txtoutput.AppendText(txt)
        End If
    End Sub

اعرف النوع لكن اللي اسال عنه لا اعرف مانوعه وماذا يسمى
طيب ..عرفت حل هالمشكلة وهي باضافة الجملة الى نفس روتين تعبئة مربع النص.
بقي الان كيف اسند متغير من نوع integer بنفس الثريد
يعني مثل
Dim textEnd As Integer = txtoutput.TextLength
كيف اعمل لها روتين مستقل كما الحال مع السابق
طيب السؤال بطريقة اخرى
كيف اقرا خاصية من مربع النص في الثريد والمعمول به الان هو اداة backgroundworker
السلام عليكم

اخي العزيز انت عامل Invoke للText تمام

طيب اهمل Invoke للفورم وضع البقية داخلها اني كنت استعملها بالنتورك عندما كنت استقبل بيانات كنت اضعها جميعا في Invoke للفورم

تحياتي
ياليت مثال كود بسيط Smile
السلام عليكم

عينة من المثال:

PHP كود :
Me.Invoke(New MethodInvoker(Sub()
                                        
idtxt.Text stdinfo.id.ToString()
                                        
nametxt.Text stdinfo.name
                                        agetxt
.Text stdinfo.age.ToString()
                                        
depttxt.Text stdinfo.dept
                                        avgtxt
.Text stdinfo.avg.ToString()
                                        
label6.Text "Data have been received!"

                                    
End Sub)) 

ارجو ان يفيدكSmile

تحياتي
سبحان الله هالاشكالية البسيطة ماقدرت احلها للحين لو يدري بعض الاخوة اظنه سيعذرني لضعفي في البرمجةSad
Invoke
!!
ما اعرفه عنها بسيط للغاية يتلخص في استدعاء اي method خاص ب Control
وافضل كلام عنها في السي شارب خصوصا وجدته هنا
http://stackoverflow.com/questions/14703...kedelegate
وهنا عاد قصة طويلة شوي
http://ikriv.com/dev/dotnet/MysteriousHang.html
عموما كل المؤشرات تؤيد توجهي لترك Windows form
والانتقال بالكلية WPF + silverlight + Asp.Net
سهولة مرونة تصميم ولو انه لازلت في حبس الفريم ورك واصداراتها الا انها
تخدم المبرمج في تسويق مشاريعه شكلا ومضمونا
والمثل يقول
زيّن بضاعتك
تبيع براحتك
والا ايش رأيك؟
ممكن تستخدم Pattern للفورم و تستدعي اي شئ موجود في الفورم من خلاله و هذا الاسلوب ممكن استخدامه مع اي كلاس تكتبه و ليس مع الفورم فقط

مثال:

في الفورم اكتب الكود التالي و هنا انا أفترض أن الفورم اسمه Form1 و هذ الفورم به تكتسب بوكس اسمه TextBox1



كود :
Public Class Form1

   Private Shared pattern As Form = CType(Nothing, Form1)
   Public Shared Function GetPattern() As Form1
       SyncLock GetType(Form1)
           If pattern Is Nothing Then
               pattern = New Form1
           End If
       End SyncLock
       Return pattern
   End Function

End Class


و الكود التالي يوضح كيف يتم استدعاء االبيانات من الفورم من خلال كلاس أخر


كود :
Public Class RetrievePatternData

   Private i As Integer = Form1.GetPattern.TextBox1.TextLength

End Class
وممكن كتابة الكود بطريقة اخري وبدلا من دالة يمكن استخدام Property و في النهاية ستجد ان كل الطرق تؤدي الي نفس الشئ

كود :
Public Class Form1

   Private Shared lock As Object = New Object
   Private Shared patternForm As Form1

   Public Shared ReadOnly Property Pattern As Form1
       Get
           Dim result As Form = CType(Nothing, Form1)
           SyncLock lock
               If patternForm Is Nothing Then
                   patternForm = New Form1
               End If
               result = patternForm
           End SyncLock
           Return result
       End Get
   End Property

End Class

Public Class RetrievePatternData

   Private i As Integer = Form1.Pattern.TextBox1.TextLength

End Class
الصفحات : 1 2