2017-02-13 292 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();}。谢谢先生。 –