C# saveFileDialog停止工作+;从internet下载文件
我想创建一个更新函数。当出现新版本时,将出现一个带有下载按钮的输入框。当我按下该按钮时,saveFileDialog将显示以将文件(新版本)保存到我想要的位置 我有这个功能:C# saveFileDialog停止工作+;从internet下载文件,c#,file,download,savefiledialog,C#,File,Download,Savefiledialog,我想创建一个更新函数。当出现新版本时,将出现一个带有下载按钮的输入框。当我按下该按钮时,saveFileDialog将显示以将文件(新版本)保存到我想要的位置 我有这个功能: public void descarcare() { SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.CreatePrompt = true; saveFileDialo
public void descarcare()
{
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.CreatePrompt = true;
saveFileDialog1.OverwritePrompt = true;
saveFileDialog1.FileName = "myText";
saveFileDialog1.DefaultExt = "txt";
saveFileDialog1.Filter ="Text files (*.txt)|*.txt|All files (*.*)|*.*";
saveFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
DialogResult result = saveFileDialog1.ShowDialog();
if (result == DialogResult.OK)
{
try
{
WebClient webClient = new WebClient();
byte[] receivedData = webClient.DownloadData("http://startut.ro/smartAppointment.rar");
FileStream fs = new FileStream(saveFileDialog1.FileName, FileMode.Create);
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(receivedData);
bw.Close();
fs.Close();
((IDisposable)fs).Dispose();
}
catch (Exception e)
{
string message = e.Message;
MessageBox.Show("Nu ai o conexiune de internet stabilită. Încearcă să te conectezi la internet, și după aceea să descarci noua versiune !", "EROARE CONEXIUNE INTERNET");
}
}
}
首先,我尝试使用一个测试按钮来查看函数是否工作,然后我将在inputbox中实现
private void button14_Click(object sender, EventArgs e)
{
descarcare();
}
当我按下按钮时,saveFileDiaglog将出现,并在崩溃后显示。任何saveFileDialog都会出现崩溃。如果我只有一个没有任何代码的saveFileDialog,它将崩溃,问题是saveFileDialog。对于silverlight,由于安全限制,它们不会提供您正在保存的文件的位置。但是,您可以使用该函数为用户选择的文件获取流对象 了解如何将WebClient与Stream对象一起使用 这是你的问题
**DialogResult result = saveFileDialog1.ShowDialog();**
您需要更改正在执行的代码
DialogResult=saveFileDialog1.ShowDialog();
到
建议将代码重组为:-
WebClient webClient = new WebClient();
saveFileDialog1.ShowDialog();
webClient.DownloadFileCompleted += new AsyncCompletedEventHandler (FileDownloaded);//Implement this method to notify the download.
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
webClient.DownloadFileAsync("http://startut.ro/smartAppointment.rar", saveFileDialog1.FileName);
}
catch (Exception e)
{
string message = e.Message;
MessageBox.Show("Nu ai o conecsiune de internet stabilită. Încearcă să te conectezi la internet, și după aceea să descarci noua versiune !", "EROARE CONECSIUNE INTERNET");
}
}
此外,saveFileDialog1.FileName提供了文件必须保存的完整路径,因此不应成为问题
但是,我建议使用
webClient.DownloadFileAsync
而不是webClient.DownloadFile
,因为后面的调用是阻塞调用。修改代码如下:
saveFileDialog1.ShowDialog();
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
WebClient webClient = new WebClient();
byte[] receivedData = webClient.DownloadData("http://startut.ro/smartAppointment.rar");
FileStream fs = new FileStream(saveFileDialog1.FileName, FileMode.Create);
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(receivedData);
bw.Close();
fs.Close();
}
catch (Exception e)
{
string message = e.Message;
MessageBox.Show("Nu ai o conexiune de internet stabilită. Încearcă să te conectezi la internet, și după aceea să descarci noua versiune !", "EROARE CONEXIUNE INTERNET");
}
}
删除第一行“saveFileDialog1.ShowDialog();”它是无用的
除去
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
从函数descarcare()
您应该这样创建它
public partial class Form1: Form
{
....
internal SaveFileDialog SaveFileDialog1;
....
public Form1() : base()
{
....
this.SaveFileDialog1 = new SaveFileDialog();
....
为了获得更好的代码,应该将SaveFileDialog1设置为类似这样的设置
....
SaveFileDialog1.CreatePrompt = true;
SaveFileDialog1.OverwritePrompt = true;
SaveFileDialog1.FileName = "myText";
SaveFileDialog1.DefaultExt = "txt";
SaveFileDialog1.Filter =
"Text files (*.txt)|*.txt|All files (*.*)|*.*";
SaveFileDialog1.InitialDirectory =
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
DialogResult result = SaveFileDialog1.ShowDialog();
if (result == DialogResult.OK)
{
try
....
在catch块中,您还应该将“消息”放在输出中 上面说他在哪里使用SilverLight和R3YY请澄清您在这里实现的web应用程序的类型..我想制作一个从internet下载rar的函数!是一个更新函数。我想让人们可以选择保存文件的路径!你的标题是“保存”。。你能把它改成“下载文件并保存到选定位置”吗?首先,我尝试使用saveFileDialog,我认为这是一种方式,但事实并非如此。它最初被标记为Silverlight。不知道它去了哪里。我想让人们可以选择文件路径!TransmitFile(FilePath+FileName应提示保存对话框您尝试过吗?。我尝试过您的代码,但我有一个错误,我不知道如何解决!不要使用确切的变量,将它们替换为用例中的变量。。还有,您遇到了什么错误?。类型或命名空间名称“HttpContext”命名空间“System.Web”中不存在。这表示您的应用程序在其他地方失败。当出现saveFileDialog时,应用程序正在失败。首先。)删除第一行“saveFileDialog1.ShowDialog();”它没有用!!第二)如何创建“saveFileDialog1”?现在可以使用了。问题是,当我用Visual C#(运行调试)运行程序时,saveFileDialog appers将崩溃,但如果我尝试用可执行文件运行应用程序,它将工作!谢谢你的回答!我补充说,但还是会崩溃!我用您的版本编辑我的初始邮件。您是否删除了第一个“saveFileDialog1.ShowDialog();”
....
SaveFileDialog1.CreatePrompt = true;
SaveFileDialog1.OverwritePrompt = true;
SaveFileDialog1.FileName = "myText";
SaveFileDialog1.DefaultExt = "txt";
SaveFileDialog1.Filter =
"Text files (*.txt)|*.txt|All files (*.*)|*.*";
SaveFileDialog1.InitialDirectory =
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
DialogResult result = SaveFileDialog1.ShowDialog();
if (result == DialogResult.OK)
{
try
....