আমি কীভাবে ডাব্লুপিএফ-তে একটি সেভ As ডায়ালগ দেখাব?


101

ডাব্লুপিএফ / সি # তে আমার একটি আবশ্যকতা আছে একটি বোতামে ক্লিক করতে, কিছু ডেটা সংগ্রহ করতে এবং তারপরে এটি একটি পাঠ্য ফাইলে রেখে দিতে যা ব্যবহারকারী তাদের মেশিনে ডাউনলোড করতে পারে। আমি এর প্রথমার্ধটি পেতে পারি, তবে আপনি কীভাবে কোনও ব্যবহারকারীকে "সংরক্ষণ করুন" ডায়ালগ বক্স সহ প্রম্পট করবেন? ফাইলটি নিজেই একটি সাধারণ পাঠ্য ফাইল হবে।


9
সুতরাং সত্যিই এই প্রশ্নটিকে সংকীর্ণ করা যেতে পারে "ডাব্লুপিএফ-তে আমি কীভাবে সেভ হিসাবে ডায়ালগ দেখাব?"
আরকিউকিউ

উত্তর:


200

উভয় উত্তর এইভাবে সিলভারলাইট SaveFileDialogশ্রেণীর সাথে সংযুক্ত; WPF বৈকল্পিক বেশ একটু ভিন্ন এবং নামস্থান বিভিন্নমুখী হয়।

Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
dlg.FileName = "Document"; // Default file name
dlg.DefaultExt = ".text"; // Default file extension
dlg.Filter = "Text documents (.txt)|*.txt"; // Filter files by extension

// Show save file dialog box
Nullable<bool> result = dlg.ShowDialog();

// Process save file dialog box results
if (result == true)
{
    // Save document
    string filename = dlg.FileName;
}

23

সেভফিলডায়ালগটি মাইক্রোসফ্টে রয়েছে W উইন 32 নেমস্পেস - এটি বের করতে আমার 10 মিনিট সময় লাগতে পারে তবে আপনি আপনাকে বাঁচাতে পারেন।


18

এখানে কিছু নমুনা কোড দেওয়া হল:

string fileText = "Your output text";

SaveFileDialog dialog = new SaveFileDialog()
{
    Filter = "Text Files(*.txt)|*.txt|All(*.*)|*"
};

if (dialog.ShowDialog() == true)
{
     File.WriteAllText(dialog.FileName, fileText);
}


1

আপনাকে কেবল একটি SaveFileDialog তৈরি করতে হবে এবং এর শো ডায়ালগ পদ্ধতিতে কল করতে হবে।


অ্যারন ধন্যবাদ, আমি ভুল সংস্করণে লিঙ্ক করেছি। আমি এখনই সঠিক উত্তরটি নির্দেশ করতে আমার উত্তর আপডেট করেছি।
দ্বাদশ 47

1

এখন পর্যন্ত সমস্ত উদাহরণ উইন 32 নেমস্পেস ব্যবহার করে তবে এর বিকল্প রয়েছে:

FileInfo file = new FileInfo("image.jpg");
var dialog = new System.Windows.Forms.SaveFileDialog();
dialog.FileName = file.Name;
dialog.DefaultExt = file.Extension;
dialog.Filter = string.Format("{0} images ({1})|*{1}|All files (*.*)|*.*",
    file.Extension.Substring(1).Capitalize(),
    file.Extension);
dialog.InitialDirectory = file.DirectoryName;

System.Windows.Forms.DialogResult result = dialog.ShowDialog(this.GetIWin32Window());
if (result == System.Windows.Forms.DialogResult.OK)
{

}

আমি IWin32Windowভিজ্যুয়াল নিয়ন্ত্রণ থেকে পাওয়ার জন্য একটি এক্সটেনশন পদ্ধতি ব্যবহার করছি :

#region Get Win32 Handle from control
public static System.Windows.Forms.IWin32Window GetIWin32Window(this System.Windows.Media.Visual visual)
{
    var source = System.Windows.PresentationSource.FromVisual(visual) as System.Windows.Interop.HwndSource;
    System.Windows.Forms.IWin32Window win = new OldWindow(source.Handle);
    return win;
}

private class OldWindow : System.Windows.Forms.IWin32Window
{
    private readonly System.IntPtr _handle;
    public OldWindow(System.IntPtr handle)
    {
        _handle = handle;
    }

    System.IntPtr System.Windows.Forms.IWin32Window.Handle
    {
        get { return _handle; }
    }
}
#endregion

Capitalize() এটি একটি এক্সটেনশন পদ্ধতিও, তবে উল্লেখ করার মতো নয় কারণ সেখানে স্ট্রিংয়ের প্রথম অক্ষরকে মূলধন করার প্রচুর উদাহরণ রয়েছে।


আপনি কিভাবে ব্যবহার করবেন GetIWin32Window?
এডগার্মটিজে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.