1
在我的表單中我有這樣的:如何用我的按鈕實現SaveFileDialog?
private void button_Click_C_Open(object sender, EventArgs e)
{
Stream myStream = null;
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.InitialDirectory = "c:\\";
openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
openFileDialog1.FilterIndex = 2;
openFileDialog1.RestoreDirectory = true;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
if ((myStream = openFileDialog1.OpenFile()) != null)
{
using (myStream)
{
filein = openFileDialog1.FileName;
fileout = "D://Download/Scuola/C++/Visual Studio/genericFileName.txt"; //crea un file e ci mette la roba criptata
textFileScelto.Text = filein;
}
}
}
catch (Exception ex)
{
MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
}
}
}
我想知道兩件事情,我不知道該怎麼辦呢?
爲FILEOUT,我怎麼帶啓動SaveFileDialog而不是手動輸入程序中的位置(否:
fileout = "D: // downloads/School/C++/Visual Studio/genericFileName.txt"
)?如何確保fileout與filein的格式相同? (例如,如果我選擇file.exe作爲一個文件,輸出必須已經
.exe
,我將不得不選擇名稱)。
在此先感謝,我對任何語法錯誤表示歉意。我希望我能很好地理解您的答案。
編輯: 我解決了我的第一個問題(0.1),但現在出來了另一個問題:
private void button_Click_C_Open(object sender, EventArgs e)
{
Stream myStream = null;
OpenFileDialog openFileDialog1 = new OpenFileDialog();
//openFileDialog1.InitialDirectory = "c:\\";
openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
openFileDialog1.FilterIndex = 2;
openFileDialog1.RestoreDirectory = true;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
if ((myStream = openFileDialog1.OpenFile()) != null)
{
using (myStream)
{
filein = openFileDialog1.FileName; //file in lo scegliamo dal openfiledialog
textFileScelto.Text = filein; //visualizza la scelta in una textbox
}
}
}
catch (Exception ex)
{
MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
}
}
}
private void Encypt_File_Click(object sender, EventArgs e)
{
try
{
Stream my1Stream;
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
saveFileDialog1.FilterIndex = 2;
saveFileDialog1.RestoreDirectory = true;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
if ((my1Stream = saveFileDialog1.OpenFile()) != null)
{
fileout = saveFileDialog1.FileName;
passwordBytes = GetPasswordBytes();
AES.EncryptFile(filein, fileout, passwordBytes);
MessageBox.Show("File Criptato!");
my1Stream.Close();
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
現在,當我輸入文件名保存,它給了我一個錯誤:進程無法訪問文件(目錄+ fileout的名稱)因爲它正在被另一個進程使用。 :(爲什麼?
Ty,但對於第二個請求,不可能讀取filein格式並自動將fileout保存爲filein格式? – Ermess
您可以使用Path.GetExtension(openFileDialog1.FileName)來獲取選定文件的擴展名,並在SaveFileDialog中使用它。也許我沒有得到你想要在這裏實現的目標......嘗試打開一個文件並將其保存在另一個新文件中,同時確保擴展名保持不變? – SuperOli
我明白了,但現在我有另一個問題(看編輯) – Ermess