تصفية الملفات هو مبين في OpenFileDialog على أساس المحتوى ؟

StackOverflow https://stackoverflow.com/questions/937061

  •  06-09-2019
  •  | 
  •  

سؤال

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

مثال: عند فتح مجلد كامل من الرمز البريدي الملفات ولكن تظهر فقط تلك التي تحتوي على ملف معين.

من الوثائق ، هناك HookProc ولكن لست متأكدا بالضبط كيف كنت استخدامها.

يرجى ملاحظة أنه إذا كان من الممكن, وأنا أدرك أنه سوف يكون بطيء نسبيا العملية.في هذه اللحظة أنا لا تشعر بالقلق إزاء الأداء.

وذلك بفضل!

هل كانت مفيدة؟

المحلول

وأود أن لا يصرف تعقيد OpenFileDialog.انها ليست من السهل جدا لبناء واحد الذي يعمل حقا.عندما تفعل بناء الخاصة بك, انها ليست "طبيعية" الحوار ونتيجة لذلك يخلط بين المستخدمين.وهذا صحيح حتى لو كنت تفعل ذلك بشكل جيد ، وهو أمر صعب.لذلك أنا أقترح عليك التمسك توسيع ما هو بالفعل هناك ، بدلا من كتابة شيء جديد.

تحقق هذه المقالة عن تمديد OFD التي قد/يمكن أنب أن تفعل بالضبط ما تريد.هناك رد أن تكتب في C# يستجيب اختيار المسار.

ذات صلة: FolderBrowserDialogEx هو مماثل على امتداد FolderBrowserDialog.على الرغم من الاسم ، يمكنك تكوين للبحث عن الملفات ، وكذلك المجلدات.هناك رد أن يحصل الاحتجاج عندما يكون هناك شيء (مجلد ملف) هو المحدد وضمن هذا الاستدعاء يمكنك أن تفعل ما عليك القيام به.على سبيل المثال, نظرة خاطفة داخل الملفات داخل مجلد نشر قائمة الملفات إلى عرض مع هذه الملفات فقط.


خيار آخر قد تنظر الحوار المكتبة من Ookii.هذا هو مفتوح المصدر تنفيذ OpenFileDialog ، وتشمل COM الأغلفة الجديدة من الحوار الاشياء في ويندوز فيستا.باستخدام هذه المكتبة يمكنك البوب Vista OpenFileDialog والحصول على الأحداث من IFileDialogEvents واجهة, في التعليمات البرمجية C#.واحد مثل هذا الحدث هو OnFolderChange().في معالج يمكنك الاتصال IFolder.GetFolder() التي سوف تحصل IShellItem, مما يتيح لك مجلد المستخدم تغيير.الخطوة التالية ستكون إلى تفصيل ويحتمل أن تكون تصفية مجموعة من الملفات ، وهو ممارسة سأترك للقارئ...

نصائح أخرى

لا، عليك أن تنفذ وظائفك الخاصة لذلك. ولكن أن نكون صادقين، فإن Openfiledialog حقا لا يفعل الكثير على أي حال. أن نكون صادقين، نعم، ربما يمكنك ربطها، لكن كنت تفعل الكثير من العمل من دون أي شيء عندما يكون العمل الحقيقي هو فحص محتوى الملفات ثم يمكنك كتابة فئة Openfiledialog الخاصة بك على رأس الذي - التي.

قد تجد هذا السؤال مفيدا بخصوص محتويات سرد ملفات ZIP:

كيفية سرد محتويات مجلد .zip في C #؟

(لاحظ، يمكنك من المحتمل أن يحددها لتحسين الأداء، فقط لا تمتد العديد من المواضيع)

ربما يمكنك استخدام حزمة رمز Windows API (يأتي مع المصدر). توضح ميزة مربعات حوار الملفات المشتركة وظيفة مربعات حوار الملفات أكثر بكثير من الإصدارات في WinForms / WPF.

http://code.msdn.microsoft.com/windowsapicodepack.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top