سؤال

أحتاج إلى طلبي أن أسأل المستخدم استعراض ملف معين، وحفظ موقع الملفات وكتابة سلسلة لاحقا من مربع نص إلى ذلك.

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

هنا تكمن معضلي، كيف يمكنني الحصول على طلبي تذكر إذا كانت هذه هي المرة الأولى التي تم إطلاقها؟

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

المحلول

أعتقد أنك تريد مجلد، وليس ملف، ولكن هذا إلى جانب النقطة.

يمكنك استخدام مسؤولي (انظر خصائص المشروع والإعدادات) ونشرها بقيمة فارغة أو غير صالحة. فقط عند قراءة القيمة غير الصالحة من الإعدادات، يمكنك بدء تشغيل الحوار.

هذا على أساس كل مستخدم.

يمكنك استخدام السجل في .NET لكنك تريد حقا الابتعاد عن ذلك قدر الإمكان. حقيقة أن المكتبة ليست في مساحة اسم النظام هي مؤشر.

نصائح أخرى

احفظ الملف الذي تم اختياره في السجل، أو في ملف تكوين في مجلد مستندات المستخدم والإعدادات.

للوصول إلى مسار البرنامج المحلي الخاص بك، استخدم:

string path = Environment.GetFolderPath(Environment.LocalApplicationData);

أود استخدام السجل لإضافة إدخال ل "SavedFilElocation" للتطبيق الخاص بك.

للحصول على برنامج تعليمي في استخدام التسجيل، تحقق هنا.

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

الشفرة:

AppInitialization()
{
    RegistryKey appKey = Registry.CurrentUser.OpenSubKey(
        @"Software\YourName\YourApp"
        ?? Registry.CurrentUser.CreateSubKey( @"Software\YourName\YourApp" );


    this.fileLocation = appKey.GetValue( "SavedFileLocation" )
        ?? GetLocationFromDialog()
        ?? "DefaultFileInCurrentDirectory.txt";
}

private static string GetLocationFromDialog()
{
    string value = null;

    RegistryKey appKey = Registry.CurrentUser.OpenSubKey(
        @"Software\YourName\YourApp"
        ?? Registry.CurrentUser.CreateSubKey( @"Software\YourName\YourApp" );

    using( OpenFileDialog ofd = new OpenFileDialog() )
    {
        if( ofd.ShowDialog() == DialogResult.OK )
        {
            value = ofd.File;
            appKey.SetValue( "SavedFileLocation", value );
        }
    }

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