Log in

View Full Version : ช่วยสอนวิธีใช้ SaveFileDialog ทีครับ



Secret_Man
30-09-2008, 08:39 PM
ใครทีเก่งเรื่อง วิชวลเบสิก 2005 ช่วยทีนะครับ

ช่วยสอนวิธีใช้ SaveFileDialog ทีครับ เอาตั้งแต่ต้นเลยนะครับ จนถึงเซฟไฟล์อะครับ

พอดีผมจะเอาข้อมูลใน RichTextbox มาเซฟเป็นไฟล์ txt อะครับ

หรือพอมีวิธีอื่นช่วนสอนทีนะครับ

neoclassic
01-10-2008, 09:42 AM
Imports System.IO


Dim cdl As New SaveFileDialog

cdl.DefaultExt = "txt"
cdl.Title = "Save Text File"
cdl.Filter = "Texe File|*.txt"
cdl.InitialDirectory = Application.StartupPath
cdl.OverwritePrompt = True

If cdl.ShowDialog = DialogResult.OK Then
Dim s As New StreamWriter(cdl.FileName)
Dim x As String
Dim z As String
Dim cr_lf As String = Chr(13) + Chr(10)

For Each x In RichTextBox1.Lines
z += x + cr_lf
Next

s.Write(z)
s.Close()

End If[/b]

Secret_Man
01-10-2008, 08:18 PM
รบกวนท่าน neoclassic ช่วยอธิบายคำสั่งนี้หน่อยได้มั้ยครับผม

cdl.InitialDirectory = Application.StartupPath

cdl.OverwritePrompt = True

Dim s As New StreamWriter(cdl.FileName)

Dim x As String

Dim z As String

Dim cr_lf As String = Chr(13) + Chr(10)

Each x In RichTextBox1.Lines

z += x + cr_lf

แล็วก็คำสั่ง cr_lf นี่เหมือนกับ VbCrlf ที่ไว้สำหรับขึ้นบรรทัดใหม่หรือไม่ครับ

neoclassic
01-10-2008, 09:44 PM
cdl.InitialDirectory = Application.StartupPath
'กำหนดตำแหน่งแรกเริ่มที่จะ save เปลี่ยนตำแหน่งหรือเอาออกก็ได้
'เช่น cdl.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.System)
'จะไปเริ่มที่ system32


cdl.OverwritePrompt = True 'แจ้งหากไฟล์มีอยู่แล้ว ทำการเตือน


Dim s As New StreamWriter(cdl.FileName)
'ตัวแปร string StreamWriter
Dim x As String
'ตัวแปร string หา data ทั้งหมด
Dim z As String
'ตัวแปร string รวม data ทั้งหมด

Dim cr_lf As String = Chr(13) + Chr(10) 'เหมือน vbCrLf ทุกอย่างเลย

Each x In RichTextBox1.Lines 'วน loop หา data ทั้งหมด

z += x + cr_lf 'data เอาค่ามาต่อๆกัน ทั้งหมด
เขียนแบบนี้ก็ได้
'z = z + x + cr_lf
หรือ
'z = z + x + vbCrLf


แล็วก็คำสั่ง cr_lf นี่เหมือนกับ VbCrlf ที่ไว้สำหรับขึ้นบรรทัดใหม่หรือไม่ครับ
'เหมือน vbCrLf ทุกอย่างเลย เพียงแต่แยกมันออกมาให้เห็นชัดๆ
[/b]

Secret_Man
04-10-2008, 12:23 AM
รบกวนท่าน neoclassic อีกทีครับผม

ผมได้ทำโค้ดที่ท่านให้มาอะครับไปใส่ไว้ในส่วนของ button1

เพื่อที่จะเวลากด button1 แล้วมันจะมีหน้าต่างเซฟเด้งขึ้นมา

เพื่อที่จะให้เลือกที่จะเซฟ แต่บังเอิญว่า พอกดปุ๊ป ไม่มีอะไีรเกิดขึ้นเลยอะครับ

ไม่มีหน้าต่าง SaveFile เด้งมาอะครับ ไม่ทราบว่าเกิดจากอะไรครับผม

แล้วก็ ตรงบรรทัด Dim s As New StreamWriter(cdl.FileName)

มันมีเส้นใต้ยึกยือยึกยือสีน้ำเงินเกิดขึ้นตรง StreamWriter มันเกิดจากอะไรอีกเช่นกันครับ

รบกวนด้วยนะครับ ^^

pspn.n
04-10-2008, 09:34 AM
ก่อนอื่นผมเปิด Browser ตัวโปรดขึ้นมา หลังจากนั้นเข้าไปที่ Google เพื่อนรัก จากนั้นใส่คำค้นลงไป
"savefiledialog vb.net" เอาละกด Search เลย .....

ไม่นานก็เจอเว็บที่ต้องการ และผมก็ได้ Code นี้มา Simple SaveFiledialog

[code]
Stream myStream;
SaveFileDialog saveFileDialog1 = new SaveFileDialog();

saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
saveFileDialog1.FilterIndex = 2;
saveFileDialog1.RestoreDirectory = true;

if(saveFileDialog1.ShowDialog() == DialogResult.OK)
{

neoclassic
04-10-2008, 09:34 AM
http://pic.citec.us/out.php/i7097_vbnetrich.jpg

ต้อง Imports System.IO ด้วยน้ะ
ของผมใช้ VB 2008 .Net Framework 3.5 SP 1 ทดลองบน vista sp 1
คิดว่าไม่น่าต่างกัน 2005 กับ 2008 ถ้า Framework เดียวกันไม่น่ามีปัญหา

Secret_Man
04-10-2008, 09:51 AM
ขอบคุณท่าน neoclassic มากครับ

จริงๆแล้วมันต้องนำมาประยุกต์จริงๆด้วยครับ ^^

แล้วผมก็เปลี่ยนจาก Richtextbox เป็น Textbox ธรรมดา

เมื่อคืนนั่งลองทำทั้งคืน ปรากฏว่าได้แล้วครับ

SaveFileDialog1.FileName = ""
SaveFileDialog1.DefaultExt = "txt"
SaveFileDialog1.Title = "Save Script File"
SaveFileDialog1.Filter = "Sec File (*.sec)|*.sec"
'SaveFileDialog1.InitialDirectory = Application.StartupPath
SaveFileDialog1.OverwritePrompt = True

If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim name As String
Dim StreamFile As New IO.StreamWriter(SaveFileDialog1.FileName)
name = TextBox12.Text
StreamFile.Writeline(name)
StreamFile.Close()
'Button7.Enabled = False
End If
End Sub

:D

Secret_Man
19-10-2008, 01:22 PM
ขอรบกวนถามผู้รู้อีกนิดนึงนะครับว่า

ถ้าเกิดว่าเราต้องการเซฟเป็นไฟล์ที่เอนโค้ดแบบ UTF-8

เราต้องเขียนคำสั่งเพิ่มตรงไหนอะครับ

:unsure:

alcoholic
20-10-2008, 01:21 PM
ขอบคุณท่าน neoclassic มากครับ

จริงๆแล้วมันต้องนำมาประยุกต์จริงๆด้วยครับ ^^

แล้วผมก็เปลี่ยนจาก Richtextbox เป็น Textbox ธรรมดา

เมื่อคืนนั่งลองทำทั้งคืน ปรากฏว่าได้แล้วครับ

SaveFileDialog1.FileName = ""
SaveFileDialog1.DefaultExt = "txt"
SaveFileDialog1.Title = "Save Script File"
SaveFileDialog1.Filter = "Sec File (*.sec)|*.sec"
'SaveFileDialog1.InitialDirectory = Application.StartupPath
SaveFileDialog1.OverwritePrompt = True

If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim name As String
Dim StreamFile As New IO.StreamWriter(SaveFileDialog1.FileName)
name = TextBox12.Text
StreamFile.Writeline(name)
StreamFile.Close()
'Button7.Enabled = False
End If
End Sub

:D
[/b]
ลองเปลี่ยนเป็น Dim StreamFile As New IO.StreamWriter(SaveFileDialog1.FileName,System.Text.Encoding.UTF8)
อ้างอิงได้ ที่นี่ (http://msdn.microsoft.com/en-us/library/3aadshsx.aspx)