2017-09-22 13 views
-3

「ファイルを保存」ブラウザを実行しようとしています。ユーザーが選択したファイル名の入力をテキストボックスの代わりにラベルに表示したい。私は私の 'オープンファイル'のブラウザのために同様のものをやって、それはうまくいった。私がどこに間違って行ったか教えてください、ありがとう!ラベルにFileNameを表示する方法

private void button5_Click(object sender, EventArgs e) 
    { 
     SaveFileDialog saveFileDialog1 = new SaveFileDialog(); 
     saveFileDialog1.Title = "Save File"; 
     saveFileDialog1.Filter = "Text files (*.txt)|*.txt| CONF(*.conf)|*.conf|All files (*.*)|*.*"; 
     saveFileDialog1.FilterIndex = 1; 
     saveFileDialog1.ShowDialog(); 

     if (saveFileDialog1.FileName != "") 
     { 
      System.IO.FileStream fs = (System.IO.FileStream)saveFileDialog1.OpenFile(); 

      switch (saveFileDialog1.FilterIndex) 
      { 
       case 1: 
        saveFileDialog1.FileName = saveFileDialog1.FileName + ".txt"; 
        break; 
       case 2: 
        saveFileDialog1.FileName = saveFileDialog1.FileName + ".conf"; 
        break; 
      } 

      fs.Close(); 
     } 
    } 

private void label2_Click(object sender, EventArgs e) 
    { 
     this.label2.Text = saveFileDialog1.FileName; 
    } 
+3

ラベルの値をクリックして設定しようとしていますか? – SeM

+0

'button5_Click'に' this.label2.Text = saveFileDialog1.FileName; 'と書いてはいけませんか? –

+0

'FileName'は拡張子を持つ完全なパスを返します。*別の*拡張子を目的に追加しますか?例えば。もし '1.txt'が' 1.txt.txt'ファイルを使用したいならば、右でしょうか?問題については、別のメソッドでローカル変数にアクセスすることはできません。これを 'private'フィールドにしてください。 @ChetanRanpariyaに同意しますが、ボタンクリックイベントハンドラでラベルテキストを設定する可能性が高くなります。 – Sinatr

答えて

0

下の3行のコードは、label2をクリックしたときの動作を示しています。ですから、ラベルを更新するために行った作業は正しいです:this.label2.Text = saveFileDialog1.FileName; 。問題は、ラベルを更新しているときに、ユーザーがラベルをクリックした後でラベルを更新したときのコードであることです。

最も簡単なことは、デザインビューでアイテムをダブルクリックすることです。プログラムが実行されているときにそのアイテムをクリックすると起動するコードに自動的に移動します。

例えばデザイナービューのボタンがある場合、VSのデザイナービューでダブルクリックすると、ボタンがクリックされたときに実行されるコードブロックであるコードブロックにジャンプします。

+0

ありがとう、私はその時間を失ったlittlleだった。 – Firzanah

関連する問題