拡張子の補完など

タグの編集
投稿者 はまじ  () 投稿日時 2008/7/22 19:03:00
visual basic 2005エキスプレスエディションでファイルの保存を練習しています。 
下記のプログラムで、教えていただきたいことが3点あります。 
 
1.「ファイルの種類」で拡張子のtxtを表示させるつもりなのですが、そうなってくれません。 
2.ファイル名にtxtを自動で付けて欲しいのですが、そうなってくれません。 
3.最近勉強を始めたところですが、作ったすべてのプログラムで「インスタンスを経由する共有メンバ、定数メンバ、列挙型メンバ、または入れ子にされた型へのアクセスです。正規の式は評価されません。」という警告が出てしまうのですが、原因がわかりません。 
 
よろしくお願いいたします。 
 
 
Public Class Form1 
    Dim write As System.IO.StreamWriter 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
        If SaveFileDialog1.ShowDialog() = DialogResult.OK Then 
            SaveFileDialog1.Filter = "txt files|*.txt" 
            SaveFileDialog1.DefaultExt = "txt" 
            write = New System.IO.StreamWriter(SaveFileDialog1.FileName, True) 
            write.WriteLine(TextBox1.Text) 
            write.Close() 
        End If 
    End Sub 
End Class
投稿者 るしぇ  () 投稿日時 2008/7/22 20:48:00
>1.「ファイルの種類」で拡張子のtxtを表示させるつもりなのですが、そうなってくれません。  
>2.ファイル名にtxtを自動で付けて欲しいのですが、そうなってくれません。  
ShowDialog でダイアログ表示して、OKボタンが押された後に 
Filter 設定しても意味ないですよね? 
提示したコードをもう一度見直してください。 
 
>3.インスタンスを経由する共有メンバ、定数メンバ、列挙型メンバ、または入れ子にされた型へ 
>のアクセスです。正規の式は評価されません。 
提示のコードでは DialogResult.OK の部分で出ますね。 
= を入力した時に出る入力候補を使えば問題ないはずですが。。。どこかのサンプルコードを 
コピペしていますか? 
 
!マークが出てクリックすると修正案が出てくると思います。 
また、『エラー一覧』でエラーを選択したまま[F1]キーでヘルプに飛び、エラーの説明があります。 
 
インスタンスとか、共有メンバの知識がないと意味不明でしょうが、Windows.Forms. という名前空間 
の指定を省略したため、自分(Form1のインスタンス)のメンバを利用しようとしています。 
ところが DialogResult.OK は定数で、プログラムで共通して使われているため、インスタンスの 
メンバを参照しようとすると警告が出ます。 
 
Windows.Forms.DialogResult.OK に変更して名前空間の指定による共有メンバへのアクセスに 
変更してください。
投稿者 はまじ  () 投稿日時 2008/7/22 23:52:00
るしぇさん、ありがとうございます。 
 
順番を入れ替えたら機能しました。 
SaveFileDialog1.Filter = "txt files|*.txt" 
SaveFileDialog1.DefaultExt = "txt" 
If SaveFileDialog1.ShowDialog() =DialogResult.OK Then 
 
3番目の問題もクリックしたら修正され、解決しました。 
教えていただいた内容はちょっと理解できないのですが、ご丁寧にありがとうございました。