SaveFileDialog與OpenFileDialog 練習所遇問題 |
答題得分者是:chris_shieh
|
rik
一般會員 發表:40 回覆:81 積分:24 註冊:2004-09-24 發送簡訊給我 |
所遇問題 : (另)存新檔 會產生檔案 但大小為零
也就是 要存的資料沒進去
使用元件:
2個按鈕
1個PictureBox
1個全域變數 private Stream MyStreamReg; 按鈕程式碼:
讀檔因該可以 因為有讓圖秀在PictureBox上
private void OpenFile_Click(object sender, System.EventArgs e)
{
Stream myStream; OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.InitialDirectory = "c:\\" ;
openFileDialog1.Filter = "bmp files (*.bmp)|*.bmp" ;
openFileDialog1.FilterIndex = 1 ;
openFileDialog1.RestoreDirectory = true ; if(openFileDialog1.ShowDialog() == DialogResult.OK)
{
if((myStream = openFileDialog1.OpenFile())!= null)
{
// Insert code to read the stream here.
我有發現 這裡不管是元程式 或寫成
MyStreamReg=myStream;
pictureBox1.Image=Image.FromStream(myStream,true);
都是可以使圖顯示出來
MyStreamReg=myStream;
pictureBox1.Image=Image.FromStream(MyStreamReg,true);
也因此 這裡我自認為myStream 所指引的就是那張圖的完整資料
所以我存檔才會那樣寫 (既然是自認為 又加上存檔失敗 因該我有哪裡搞錯了)
myStream.Close();
}
}
}
存檔如我想問 有生其檔 但無內容= ="
private void SaveFile_Click(object sender, System.EventArgs e)
{
Stream myStream;
SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.Filter = "bmp files (*.bmp)|*.bmp" ;
saveFileDialog1.FilterIndex = 1 ;
saveFileDialog1.RestoreDirectory = true ; if(saveFileDialog1.ShowDialog() == DialogResult.OK) //你按了OK
{
if((myStream = saveFileDialog1.OpenFile()) != null) //輸入不是空的
{
// Code to write the stream goes here.
myStream=MyStreamReg; 這行就是因為之前的自認為 而誕生的= ="
MessageBox.Show("HELLO") ; //單純放給自己看的= ="
myStream.Close();
}
}
} 就麻煩 懂的人 幫我指點修改一下吧^^" 發表人 - rik 於 2005/07/28 04:50:07 發表人 - rik 於 2005/07/28 05:01:35
------
時與不時的撿起身旁的拼圖碎片 不懂的部分 半解的部分 就像一塊拼圖 留於腦中 等待拼出完美解答的一天 這就是我的思路 我的創作方法 而我也接受 這作法所帶來的"代價" - 時間 |
chris_shieh
高階會員 發表:46 回覆:308 積分:240 註冊:2004-04-26 發送簡訊給我 |
|
rik
一般會員 發表:40 回覆:81 積分:24 註冊:2004-09-24 發送簡訊給我 |
引言: OpenFile_Click中 MyStreamReg=myStream; 是讓MyStreamReg指向myStream 所以當myStream.close以後 MyStreamReg也是空的 所以你應該是要把myStream 換成 MyStreamReg 不需要myStream區域變數來轉換(不然就要把myStream內容拷貝給MyStreamReg) 而且在 SaveFile_Click中才close MyStreamReg @瞭解越多.懂得越少@然來如此@@" 果然思考上有欠缺@@" 最主要這樣寫的原因是 程式原稿是參考別人的^^" (try and error派@@") 原來我欠缺的是當myStream.close以後 MyStreamReg也是空的 ^^" 感謝指導^^" ========================確認解決================== 我把OK的程式PO出^^ private void OpenFile_Click(object sender, System.EventArgs e) { OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.InitialDirectory = "c:\\" ; openFileDialog1.Filter = "bmp files (*.bmp)|*.bmp" ; openFileDialog1.FilterIndex = 1 ; openFileDialog1.RestoreDirectory = true ; if(openFileDialog1.ShowDialog() == DialogResult.OK) { if((this.MyStreamReg = openFileDialog1.OpenFile())!= null) { } } } private void SaveFile_Click(object sender, System.EventArgs e) { byte Register; int GetReturn=0; Stream myStream; SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.Filter = "bmp files (*.bmp)|*.bmp" ; saveFileDialog1.FilterIndex = 1 ; saveFileDialog1.RestoreDirectory = true ; if(saveFileDialog1.ShowDialog() == DialogResult.OK) //你按OK { if((myStream = saveFileDialog1.OpenFile()) != null) //輸入不是空的 { try { MyStreamReg.Position=0; //如果曾經利用過MyStreamReg //MyStreamReg.Position 值視呼會變 // Code to write the stream goes here. for(;GetReturn!=-1;) //做到讀完 { GetReturn=MyStreamReg.ReadByte(); //判斷是否讀完 if(GetReturn!=-1) { myStream.WriteByte((byte)GetReturn); } } } catch { MessageBox.Show("傳送 要儲存的資料出錯") ; } MessageBox.Show("HELLO") ; myStream.Close(); } } } 發表人 - rik 於 2005/07/28 14:24:07
------
時與不時的撿起身旁的拼圖碎片 不懂的部分 半解的部分 就像一塊拼圖 留於腦中 等待拼出完美解答的一天 這就是我的思路 我的創作方法 而我也接受 這作法所帶來的"代價" - 時間 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |