2017-02-13 166 views
0

我正在使用我的form1使用拖放事件和form2的系統,該系統顯示在form1中丟失的字段的信息。在form2有一個Button確定並取消。好的,如果顯示的信息是正確的,它將繼續複製信息,並將其作爲文件夾並取消按鈕,如果它不正確。從另一個函數調用另一個函數C#

這裏是怎麼一回事:

拖放文件--->(Form1中)拖放事件---->(窗體2)顯示的信息:(文件名,工單數量,帶寬等)

public void BagsakanBin_DragDrop(object sender, DragEventArgs e) 
{ 
    string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); 
    foreach (string file in files) 
    { 
     WOFilenameERROHANDLER(); 
     Filename = Path.GetFullPath(file); 
     //function para papuntahin si file kay Patching folder 
     if(Filename.ToLower().Contains("pat_")) 
     { 
      if (!Path.HasExtension(file)) 
      { 
       MessageBox.Show("Patching Diagram Issued!"); 
       DirectoryInfo dir = new DirectoryInfo(Filename); 
       FileInfo[] FolderFile = dir.GetFiles(); //Getting Text files 
       if (!dir.Exists) 
       { 
        throw new DirectoryNotFoundException(
         "Source directory does not exist or could not be found: " 
         + Filename); 
       } 
       DirectoryInfo[] dirs = dir.GetDirectories(); 
       // If the destination directory doesn't exist, create it. 
       if (!Directory.Exists(PATdestFile + "\\" + Path.GetFileName(file))) 
       { 
        Directory.CreateDirectory(PATdestFile + "\\" + Path.GetFileName(file)); 
       } 
       foreach (FileInfo filename in FolderFile) 
       { 
        if (filename.Name.Contains(".pdf") || filename.Name.Contains(".xls") || filename.Name.Contains(".vsd") || filename.Name.Contains(".docx") || filename.Name.Contains(".doc") || filename.Name.Contains(".ppt")) 
        { 
         filename.CopyTo(PATdestFile + "\\" + Path.GetFileName(file) + "\\" + filename.Name, true); 
        } 
        else 
        { 
         MessageBox.Show("   Cannot copy file " + filename.Name + "\n   Only .pdf,.xls,vsd,.docx,.doc,.ppt\n    Are acceptable file extensions", "WARNING!"); 
        } 
       } 
      } 
      else 
      { 
       Directory.CreateDirectory(PATdestFile + "\\" + Path.GetFileNameWithoutExtension(file)); 
       if (Path.GetFileName(file).Contains(".pdf") || Path.GetFileName(file).Contains(".xls") || Path.GetFileName(file).Contains(".vsd") || Path.GetFileName(file).Contains(".docx") || Path.GetFileName(file).Contains(".doc") || Path.GetFileName(file).Contains(".ppt")) 
       { 
        File.Copy(Path.GetFullPath(file), PATdestFile + "\\" + Path.GetFileNameWithoutExtension(file) +"\\" + Path.GetFileName(file), true); 
       } 
       else 
       { 
        MessageBox.Show("   Cannot copy file " + Path.GetFileName(file) + "\n   Only .pdf,.xls,vsd,.docx,.doc,.ppt\n    Are acceptable file extensions", "WARNING!"); 
       } 
      } 
      PATFileNameSeparator(); 
      PATupdate(); 
     } 
    } 
} 

,你可以看到複製和文件夾的製作是在draganddrop事件 我怎麼叫form2來顯示信息,當我點擊確定按鈕,將繼續複製文件。

public void DisplayInfo(string WOfilename) 
    { 
     WOdisp.Text = WOfilename; 
    } 

這就是我所說的信息

public void WOFilenameERROHANDLER() 
    { 
     IssuedDisp.DisplayInfo(Path.GetFileName(WOfilename.ToString())); 
    } 

問題是我怎麼呼籲draganddrop功能

+1

我不太明白:「我怎麼呼籲draganddrop功能確定按鈕」你要點擊OK自動在代碼中?在我在form1中的應用程序上拖動一個文件之後,我需要輸入一個文件名爲 –

+0

。 form2顯示信息,在form2中有一個ok按鈕。如果我按下form2應該關閉和form1將繼續到文件的複製。我不知道該怎麼辦。我應該創建bool並在拖放功能中創建條件,如if(okbutton == 1),然後繼續進行復制。先生,唯一的辦法是 –

回答

0

一種可能性

你可以在你的form2就像一面旗幟:

public partial class Form2 : Form 
{ 
    public bool OK { get; set; } 

如果OK被點擊其設置爲true。在Form1訂閱FormClosing事件的Form2

Form2 form2 = new Form2(); 

form2.FormClosing += Form2_FormClosing; 

然後檢查標誌,當Form2被關閉,事件被觸發。

private void Form2_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    Form2 f2 = sender as Form2; 
    if (f2 != null) 
    { 
     if (f2.OK) 
     { 
      // proceed 
     } 
     else 
     { 
      // don't proceed 
     } 
    } 
} 

這裏闡述一點:

編輯

這裏第二個可能性:

您可以設置Form2DialogResult直接在按鈕:

private void OK_Button_Click(object sender, EventArgs e) 
{ 
    this.DialogResult = DialogResult.OK; 
} 

private void Cancel_Button_Click(object sender, EventArgs e) 
{ 
    this.DialogResult = DialogResult.Cancel; 
} 

現在,您可以檢查Form1DialogResult當你調用它就像一個消息:

Form2 form2 = new Form2(); 

// ShowDialog will block the execution of further code until the window has closed 
// and it will return a DialogResult to check 
if (form2.ShowDialog() == DialogResult.OK) 
{ 
    // proceed 
} 
else 
{ 
    // do not proceed 
} 
+0

你在form1中訂閱什麼意思?我應該創建if語句,如if(ok == true) –

+0

「Form2」的名稱是什麼?在您的發佈代碼 –

+0

您好,先生,我看不到調用form2.Show();'謝謝 。它爲我工作。 :) –

0

OK按鈕添加一個處理程序在Form1的窗體2的按鈕單擊事件。

Form2 form2 = new Form2(); 
    (form2.Controls.Find("btnOK", true)[0] as Button).Click += btnOK_Click; 
    form2.Show(); 


    private void btnOK_Click(object sender, EventArgs e) 
    { 
     CopyTheFiles(); 
    } 
+0

嗎?我知道這個代碼,但我試着換個方式。 –

+0

@ [Laynad Tabije]現在我明白你在找什麼,從你的評論中,我已經編輯了答案。這是你需要的嗎? – Zesty

+0

嗨,先生,謝謝你的回答。但它沒有形成我的工作。這是我做的。我創建了一個bool,並創建了一個if(okbutt == true){docopying();}。謝謝先生。 –