سؤال

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

الخطأ:
الرسالة: خطأ غير معلم في تطبيق Silverlight 2
الكود: 4004
الفئة: ManagedRuntimeError
الرسالة: System.Security.SecurityException: يجب أن يكون مربعات الحوار مستخدمًا.
at System.windows.controls.openfiledialog.showdialog ()
في myControl.OpenimportFileDialog ()
في ...

الرمز:

private void BrowseFileButton_Click(object sender, RoutedEventArgs e)
{
    if (string.IsNullOrEmpty(lblFileName.Text))
    {
        if (MessageBox.Show("Are you sure you want to change the Import file?", "Import", MessageBoxButton.OKCancel) == MessageBoxResult.Cancel)
        {
            return;
        }
    }
    EnableDisableImportButtons(false);
    var fileName = OpenImportFileDialog();
    lblFileName.Text = fileName ?? string.Empty;
    EnableDisableImportButtons(true);    
}

private string OpenImportFileDialog()
{
    var dlg = new OpenFileDialog { Filter = "CSV Files (*.csv)|*.csv" };
    if (dlg.ShowDialog() ?? false)
    {
        using (var reader = dlg.File.OpenText())
        {
            string fileName;
            //process the file here and store fileName in variable
            return fileName;
        }
    }
}

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

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

المحلول

يمكنك القيام بعملين على انقر فوق مستخدم واحد.

يمكنك عرض مراسلة الرسائل التي تستخدم إذنك بشكل فعال لإظهار مربع حوار على إجراء المستخدم.

ثم تحاول عرض مربع الحوار ، نظرًا لأن هذا مربع حوار ثانٍ على إجراء المستخدم غير مسموح به.

تخلص من مربع الحوار التأكيد وستكون بخير.

نصائح أخرى

إزالة نقاط الاستراحة من قبل إذا (dlg.showdialog () ؟؟ خطأ) سوف يدير الكود عمله بالنسبة لي.

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