从另一个函数C#调用另一个函数

时间:2017-02-13 11:44:50

标签: c# function drag-and-drop

我正在使用我的form1使用拖放事件的系统,form2显示form1中丢弃的字段信息。在form2中有一个Button确定并取消。好的,如果显示的信息是正确的,那么它将继续复制信息并将其作为文件夹和取消按钮,如果它不正确。

这是怎么回事:

删除文件--->(Form1)拖放事件---->(Form2)显示信息:(文件名,工单号,带宽等)

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功能

上调用ok按钮

2 个答案:

答案 0 :(得分:0)

在Form1中为Form2的按钮单击事件添加处理程序。

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

答案 1 :(得分:0)

一种可能性

您可以在form2中添加一个标记,如:

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

如果单击确定,则将其设置为true。在Form1订阅[{1}}

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 } } } 的{​​{1}}:

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