كود :
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 للفورم
تحياتي
سبحان الله هالاشكالية البسيطة ماقدرت احلها للحين لو يدري بعض الاخوة اظنه سيعذرني لضعفي في البرمجة
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