2017-02-13 6 views
0

Я работаю над системой, в которой мой form1 использует событие перетаскивания и form2, которое отображает информацию о поданной падеже в form1. В form2 есть Button ok и отмените. Хорошо, если отображаемая информация верна, она будет продолжать копировать информацию и делать ее как папку и кнопку Отмена, если она неверна.Вызов другой функции из другой функции C#

вот как это идет:

Капля Файл ---> (Form1) Перетащите события ----> (Form2) Отображение информации: (имя файла, номер WorkOrder, пропускной способности и т.д.)

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 автоматически в коде? –

+0

после того, как я перетащил файл в своем приложении в form1. форма 2 отображает информацию, а в форме2 - кнопка ok. если я нажму, чтобы форма 2 закрылась, а form1 перейдет к копированию файла. Я не знаю, что делать.должен ли я создать bool и создать условие в функции перетаскивания, например if (okbutton == 1), а затем перейти к копированию. –

ответ

0

Одна возможность

Вы могли бы иметь флаг в вашем form2 как:

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

если ОК щелкнул установить его в действительности. Подписаться на 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 
     } 
    } 
} 

Здесь разработать немного:

EDIT

Здесь вторая возможность:

Вы можете установить DialogResult в Form2 непосредственно в кнопках:

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; 
} 

Теперь вы можете проверить DialogResult в Form1, когда вы называете это так же, как MessageBox:

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

Что вы подразумеваете под подпиской в ​​форме1? должен ли я создать оператор if, например if (ok == true) –

+0

Каково имя вашей 'Form2'? Я не вижу вызов 'form2.Show();' в вашем опубликованном коде –

+0

привет сэр. Спасибо . это сработало для меня. :) –

0

Добавить обработчик события нажатия кнопки Form2 в Form1.

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();}. Спасибо, сэр. –

Смежные вопросы