如何在不同的事件中使用字符串变量?

问题描述:

我想知道如何从其他方法调用/使用字符串。如何在不同的事件中使用字符串变量?

public partial class PPAP_Edit : Form 
    { 
    string Main_dir { get; set; } 
    string Sub_dir { get; set; } 
    string targetPath { get; set; } 

...等等,我不想复制所有

private void button_browse_Click(object sender, EventArgs e) 
    { 
     if (od.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
     { 
      try 
      { 
       Main_dir = @"C:\Users\h109536\Documents\PPAP\"; 
       Sub_dir = text_PSW_ID.Text + "_" + text_Partnumber.Text + "_" + text_Partrev.Text + @"\"; 
       targetPath = System.IO.Path.Combine(Main_dir, Sub_dir); 
       { 
        if (!System.IO.Directory.Exists(targetPath)) 
        { 
         System.IO.Directory.CreateDirectory(targetPath); 
         MessageBox.Show("Folder has been created!"); 
        } 
        foreach (string fileName in od.FileNames) 

         System.IO.File.Copy(fileName, targetPath + System.IO.Path.GetFileName(fileName), true); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show("An error has occurred: " + ex.Message); 
      } 
        } 
private void button_open_Click(object sender, EventArgs e) 
    {    
     if (!Directory.Exists(targetPath)) 
     { 
      MessageBox.Show("Folder is not added to the database!"); 
      System.Diagnostics.Process.Start("explorer.exe", Main_dir);     
     } 
     else 
     { 
      System.Diagnostics.Process.Start("explorer.exe", Main_dir + Sub_dir); 
     }      
    } 

我reffering到Main_dirSub_dirTARGETPATH字符串,但直到我单击浏览按钮时,打开按钮方法才起作用。

非常感谢您的帮助!

+0

“打开按钮方法不起作用,直到我单击浏览按钮” - 你打算如何打开,如果'Main_dir','targetPath'和'Sub_dir'尚未通过定义文件夹“浏览”按钮? – Quantic

+0

纠正我如果我错了,但我认为它不应该通过openFiledialog定义。 Main_dir已被定义为@“C:\也是文本框中的sub_dir – NOGRP90

+0

如果我把整个代码放到打开的按钮事件中而不是浏览器方法停止工作 – NOGRP90

从窗体的构造函数中设置主目录的默认值。它随后可用于表单中的任何方法。子路径和目标路径只是函数,可以放在属性getter方法中。

public partial class PPAP_Edit : Form 
{ 
    // set this from constructor 
    public string MainDir { get; set; } 

    // can't set this in constructor as it requires access to form controls, but can just use the getter 
    public string SubDir 
    { 
     get 
     { 
      return text_PSW_ID.Text + "_" + text_Partnumber.Text + "_" + text_Partrev.Text + @"\"; 
     } 
    } 

    // again just use the getter 
    public string TargetPath 
    { 
     get 
     { 
      return Path.Combine(MainDir, SubDir); 
     } 
    } 

    // set defaults in constructor 
    public PPAP_Edit() 
    { 
     MainDir = @"C:\Users\h109536\Documents\PPAP\"; 
    } 
} 
+0

完美运行!非常感谢! – NOGRP90

+0

没问题:-) – Erresen