تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
ربط حدث بمجلد
#1
Question 
السلام عليكم
عرضت محتوي مجلد داخل ليست بوكس
اريد عندما يتم تغير محتوي المجلد بالزيادة او النقصان يتم تحديث محتوي اليست بوكس
اريد الفكرة فقط
او لو في دالة نربطها بالمجلد
الرد }}}
تم الشكر بواسطة:
#2
السلام عليكم ورحمة الله وبركاته

يمكنك مراقبة الزيادة أو النقصان في المجلد الهدف باستخدام الأداة FileSystemWatcher

تضع في أحداثها الدالة التي تستخدمها لملء الليست بوكس بمحتويات ذلك المجلد

كلما حدثت زيادة أو نقصان تم التحديث Wink

بعد إضافة الأداة للنموذج يمكنك تغيير خصائصها كالتالي :

PHP كود :
' تحديد مسار المجلد الذي تريد مراقبته
        FileSystemWatcher1.Path = "مسار المجلد"


        ' 
تفعيل أو تعطيل عمل الأداة وهي تماثل تماماً عمل التايمر
        FileSystemWatcher1
.EnableRaisingEvents True


        
' مراقبة كل الملفات .. يمكنك تحديد ملفات بعينها
        FileSystemWatcher1.Filter = "*.*"


        ' 
مراقبة المجلدات الفرعية داخل المجلد الرئيس
        FileSystemWatcher1
.IncludeSubdirectories True


        
' تحديد متى ينطلق الحدث
        ' 
هنا حددنا له إذا تغير اسم المجلد أو الملف ... أو إذا تم كتابة أي شيء داخل المجلد أو الملف
        
' وهنا أحداث أخرى اكتشفها بنفسك :
        FileSystemWatcher1.NotifyFilter = NotifyFilters.FileName Or NotifyFilters.LastWrite 


يمكنك وضع دالة ملء الليست بوكس في الحدثين التاليين للأداة :
PHP كود :
Private Sub FileSystemWatcher1_Changed(ByVal sender As ObjectByVal e As System.IO.FileSystemEventArgsHandles FileSystemWatcher1.Changed
        
If e.ChangeType WatcherChangeTypes.Changed Then
            
' ضع هنا دالة تحديث الليست بوكس
        End If
    End Sub

    Private Sub FileSystemWatcher1_Created(ByVal sender As Object, ByVal e As System.IO.FileSystemEventArgs) Handles FileSystemWatcher1.Created
        If e.ChangeType = WatcherChangeTypes.Created Then
            ' 
ضع هنا دالة تحديث الليست بوكس
        End 
If
    
End Sub 

****
***
**
*
(وَقُل رَّبِّ زِدْنِي عِلْمًا)

الرد }}}
تم الشكر بواسطة: Aly El-Haddad , sooriaty03 , محمود رغمان
#3
-

ما شاء الله لا قوة الا بالله
جزاك الله خيرا وجعله في موازين حسناتك

اداة رائعة جدا جدا ما كنت اعرف عنها شئ
انا قرءات عنها الان وجربتها

هناك شئ اخر يحتاج حرفة وذكاء

انا اقوم بعمل بعض الاجراءت علي اي ملف يتم وضعه داخل المجلد المحدد
فيه مشكلة
الحدث بينطلق بمجرد عمل لصق للملف في المجلد مما يؤدي الي تنفيذ الاكواد قبل اتمام الصق لان حجم الملفات كبير
اتمني تكون وضحت المشكلة

-
الرد }}}
تم الشكر بواسطة: kslawy
#4
الحدث ينطلق مرتين
الاولـي : عند لصق الملف داخل المجلد
والثانية : عند الانتهاء من نسخ الملف بالكامل الي المجلد
كيف يمكنني التفرقة بين الحدثين


وعند استخدام
e.ChangeType.ToString()
تقريبا مفيش فرق



الرد }}}
تم الشكر بواسطة: kslawy
#5
(05-01-14, 04:27 PM)ali.alfoly كتب : -

ما شاء الله لا قوة الا بالله
جزاك الله خيرا وجعله في موازين حسناتك

اداة رائعة جدا جدا ما كنت اعرف عنها شئ
انا قرءات عنها الان وجربتها

هناك شئ اخر يحتاج حرفة وذكاء

انا اقوم بعمل بعض الاجراءت علي اي ملف يتم وضعه داخل المجلد المحدد
فيه مشكلة
الحدث بينطلق بمجرد عمل لصق للملف في المجلد مما يؤدي الي تنفيذ الاكواد قبل اتمام الصق لان حجم الملفات كبير
اتمني تكون وضحت المشكلة

-

PHP كود :
Imports System.IO

Public Class Form1

    
Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgsHandles MyBase.Load
        FileSystemWatcher1
.Path "مسار المجلد"
        
FileSystemWatcher1.EnableRaisingEvents True
        FileSystemWatcher1
.Filter "*.*"
        
FileSystemWatcher1.IncludeSubdirectories True
        FileSystemWatcher1
.NotifyFilter NotifyFilters.FileName Or NotifyFilters.LastWrite
    End Sub

    
Private Sub FileSystemWatcher1_EventHandler(ByVal sender As ObjectByVal e As System.IO.FileSystemEventArgsHandles FileSystemWatcher1.CreatedFileSystemWatcher1.ChangedFileSystemWatcher1.RenamedFileSystemWatcher1.Deleted
        
If (e.ChangeType WatcherChangeTypes.CreatedOrElse (e.ChangeType WatcherChangeTypes.ChangedOrElse (e.ChangeType WatcherChangeTypes.RenamedOrElse (e.ChangeType WatcherChangeTypes.DeletedThen
            
If Timer1.Enabled Then
                Timer1
.Enabled False
            End 
If
            
Timer1.Enabled True
        End 
If
    
End Sub

    
Private Sub Timer1_Tick(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Timer1.Tick
        Timer1
.Enabled False
        MessageBox
.Show("A file has been created, changed, renamed or deleted!")
    
End Sub
End 
Class 

(05-01-14, 06:56 PM)ali.alfoly كتب : الحدث ينطلق مرتين
الاولـي : عند لصق الملف داخل المجلد
والثانية : عند الانتهاء من نسخ الملف بالكامل الي المجلد
كيف يمكنني التفرقة بين الحدثين


وعند استخدام
e.ChangeType.ToString()
تقريبا مفيش فرق




PHP كود :
Imports System.IO

Public Class Form1

    
Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgsHandles MyBase.Load
        FileSystemWatcher1
.Path "مسار المجلد"
        
FileSystemWatcher1.EnableRaisingEvents True
        FileSystemWatcher1
.Filter "*.*"
        
FileSystemWatcher1.IncludeSubdirectories True
        FileSystemWatcher1
.NotifyFilter NotifyFilters.FileName Or NotifyFilters.LastWrite
    End Sub

    
Private Sub FileSystemWatcher1_EventHandler(ByVal sender As ObjectByVal e As System.IO.FileSystemEventArgsHandles FileSystemWatcher1.CreatedFileSystemWatcher1.ChangedFileSystemWatcher1.RenamedFileSystemWatcher1.Deleted
        MsgBox
(e.ChangeType.ToString())
    
End Sub
End 
Class 
الرد }}}
تم الشكر بواسطة: kslawy
#6
جزاك الله خيرا اخي Aly El-Haddad
لاكن واضح ان حدرتك مفهمتش انا اقصد ايه
انا قرءات في المنتدي القديم عن هذه الاداة واجيد التعامل معها جيدا واعرف جميع الاحداث والخصائص

اقتباس كلام الاخ الي شرح الاداة
إقتباس :- عندما يتم إنشاء ملف كبير ضمن المجلد فقد لا تستطيع قراءة كامل الملف مباشرة لأنه يكون ما يزال مملوكا من قبل العملية Process التي قامت بكتابة البيانات إلى ذلك الملف ويجب عليك حماية الكتابة إلى الملف الأصلي باستخدام حلقة Try فإن تم إطلاق خطأ يمكنك محاولة العملية بعد بضع ميلي ثانية أخرى

لا ادري كيف انفذ هذا الاكلام الجزء الغير مفهوم

إقتباس :حماية الكتابة إلى الملف الأصلي

انا بقالي من اول امس اعاني معها لحد ما حفظت الاداة زي اسمي وموصلتش لحل

وجزاكم الله خيرا
الرد }}}
تم الشكر بواسطة:
#7
السلام عليكم
الحمد لله وصلت للحل
الرد }}}
تم الشكر بواسطة: kslawy
#8
ايه هو
الرد }}}
تم الشكر بواسطة:
#9
اخي محمود اضغط علي الرابط
الرد }}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم