默认文件名 SaveFileDialog

23

我想创建一个带有默认文件名的SaveFileDialog,并从DataGridViewCells的值中获取。

到目前为止,我尝试过:

private void buttonSave_Click(object sender, EventArgs e) 
{
    //first
    //mySaveFileDialog.FileName = myDataGridView.SelectedCells[2].Value.ToString();
    //second
    SaveFileDialog saveFile = new SaveFileDialog();
    saveFile.FileName = myDataGridView.SelectedCells[2].Value.ToString();
    saveFile.ShowDialog();
}

有人能帮我解决这个问题吗?


你有两个 SaveFileDialog,一个是 mySaveFileDialog(可能是拖放在你的窗体上的组件),另一个是 saveFile(由程序创建)。 - Renaud Bancel
@pcnThird 是的,我忘记在我的帖子中包含它了。 - Surya Matadewa
@RenaudBancelDAVEO 我只在运行程序时使用一个...在这篇文章中,我上传了两个代码以展示我已经尝试了其中的两个。 - Surya Matadewa
1
@GrantWinney WinForms 平台 - Surya Matadewa
不是这样的...我已经用"messagebox.show"测试过了,它有值...当我尝试使用简单的字符串文本,比如"test"时...它仍然没有出现(我的意思是"test",而不是对话框保存框)。 - Surya Matadewa
显示剩余2条评论
5个回答

29
SaveFileDialog中有一个旨在此目的的属性:DefaultFileName(适用于Silverlight)或FileName(适用于.NET)。

您在问题中提供的(无法编译的)代码将变为:

    private void buttonSave_Click(object sender, EventArgs e) 
    {
        SaveFileDialog mySaveFileDialog = new SaveFileDialog();
        //Silverlight
        mySaveFileDialog.DefaultFileName = myDataGridView.SelectedCells[2].Value.ToString();
        //.NET
        mySaveFileDialog.FileName = myDataGridView.SelectedCells[2].Value.ToString();
    }

1
@GrantWinney - 回答中包含的链接表明相反的情况。 - M.Babcock
@GrantWinney - 我总是忘记Silverlight的存在...我会调整我的答案来考虑真实的平台。 - M.Babcock
1
@M.Babcock 我也找不到 "defaultFileName" 属性,我使用的是 WinForms 平台。 - Surya Matadewa
1
@katik - 你能描述一下这里的“__failed__”表示什么吗?你展示的属性是针对Winforms的正确属性,所以理解正在发生的事情非常重要。 - M.Babcock
@M.Babcock,我使用上面的两个代码没有文件名...就像那个代码没有任何效果...我尝试从属性窗口“mySaveFileDialog”中设置它...如果我只使用静态字符串像“test”默认文件名,它可以正常运行...但是当它来自变量时,我有点难以处理。 - Surya Matadewa
显示剩余3条评论

4
问题在于你需要使用:
myDataGridView.SelectedCells[0].Value.ToString();

替代

myDataGridView.SelectedCells[2].Value.ToString();

直到您用鼠标或其他方式选择了3个或更多单元格。您可以像这样进行索引[2]

private void buttonSave_Click(object sender, EventArgs e) 
{
    SaveFileDialog saveFile = new SaveFileDialog();
    saveFile.FileName = myDataGridView.SelectedCells[0].Value.ToString();
    saveFile.ShowDialog();
}

这对你有用吗?


3

您的代码应该如下所示:

private void buttonSave_Click(object sender, EventArgs e) 
{
    SaveFileDialog saveFile = new SaveFileDialog();
    saveFile.FileName = myDataGridView.SelectedCells[2].Value.ToString();
    saveFile.ShowDialog();
}

在显示对话框之前,使用FileName设定文件名。


2
请在简单的WinForm应用程序中尝试以下操作:
    static void Main()
    {
        var saveFile = new SaveFileDialog();
        saveFile.FileName = "myfile.txt";
        saveFile.ShowDialog();
        string fileName = saveFile.FileName ;
        MessageBox.Show(fileName);
    }

它可以工作!


2
.ShowDialog() 应该放在 .FileName 之后。 - Darius Miliauskas

-3

打印面板中的所有控件

public Bitmap MemoryImage;
    public void GetPrintArea( Panel pn1)
    {      
        MemoryImage = new Bitmap(panel13.Width, pn1.Height);
        pn1.DrawToBitmap(MemoryImage, new Rectangle(0, 0, pn1.Width, pn1.Height));
    }
    protected override void OnPaint(PaintEventArgs e)
    {
        if (MemoryImage != null)
        {
            e.Graphics.DrawImage(MemoryImage, 0, 0);
            base.OnPaint(e);
        }
    }
    void printdoc1_PrintPage(object sender, PrintPageEventArgs e)
    {




        Rectangle pagearea = e.PageBounds;
        e.Graphics.DrawImage(MemoryImage, (pagearea.Width / 2) - (this.panel13.Width / 2), this.panel13.Location.Y);


    }


        Bitmap bmp = new Bitmap(MemoryImage.Width, MemoryImage.Height);
        panel13.DrawToBitmap(bmp, panel13.Bounds);

        saveFileDialog1.ShowDialog();
        saveFileDialog1.Title = "Save";
        saveFileDialog1.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif";

        bmp.Save(saveFileDialog1.FileName);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接