如何在Windows窗体应用程序和用户控件dll文件中使用变量类?

时间:2014-12-26 04:24:14

标签: c# .net winforms dll

在Windows窗体项目中,我创建了一个新类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FTP_ProgressBar
{
    class FtpConfig
    {
        public static string txtHost;
        public static string txtUsername;
        public static string txtPassword;
        public static string txtDir;
        public static string txtUploadFile;
        public static string txtPort;
        public static System.Windows.Forms.CheckBox chkPassive;
        public static FtpSettings f;
    }
}

在form1中,我有一个点击按钮,我正在调用一个带有设置的方法:

private void btnUpload_Click(object sender, EventArgs e)
        {            
            FtpSettings();
        }

然后:

private void FtpSettings()
        {
            if (this.ftpProgress1.IsBusy)
            {
                this.ftpProgress1.CancelAsync();
                this.btnUpload.Text = "Upload";
            }
            else
            {
                FtpConfig.txtHost = this.txtHost.Text;
                FtpConfig.txtUsername = this.txtUsername.Text;
                FtpConfig.txtPassword = this.txtPassword.Text;
                FtpConfig.txtDir = this.txtDir.Text;
                FtpConfig.txtUploadFile = this.txtUploadFile.Text;
                FtpConfig.txtPort = this.txtPort.Text;
                FtpConfig.chkPassive = this.chkPassive;

                this.toolStripProgressBar1.Visible = true;
                this.ftpProgress1.RunWorkerAsync(FtpConfig.f);
                this.btnUpload.Text = "Cancel";
            }
        }

问题是我在我的form1设计器中有一个控件,我将dll文件添加到工具箱后拖动控件就像带有treeView1和listView1的Windows资源管理器:

Explorer Window

资源管理器窗口是左侧的,扩展了C节点树。

问题是我需要以某种方式在此事件中使用dll库类调用/使用form1中的FtpSettings()方法:

void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            if (e.ClickedItem.Text == "Upload")
            {
                List<String> selected = new List<String>();
                string dir = treeView1.SelectedNode.FullPath;
                dir = dir + "\\";
                foreach (ListViewItem lvi in listView1.SelectedItems)
                {
                    string g = Path.Combine(dir, lvi.Text);
                    selected.Add(g);
                }

                AllFiles = selected.ToArray();
                FilesFromExplorerOrManual = false;
                Bgw.RunWorkerAsync();
            }
        }

所以在将控件dll文件添加到我的form1工具箱之后将其拖到form1设计器我每次点击上传时都需要调用FtpSettings方法:

if (e.ClickedItem.Text == "Upload")

在这一行之后:FtpSettings();

但首先我将它拖到form1设计器后无法访问该事件。 第二个也许我需要在这个dll的其他事件中调用FtpSettings()。

我尝试在form1设计器中拖动它然后我有一个变量:explorerTree1所以我试着在form1构造函数中执行:

explorerTree1.MouseUp += explorerTree1_MouseUp;

然后:

void explorerTree1_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                FtpSettings();
            }
        }

我使用了一个断点,但它永远不会停止/进入此事件。它也不是我需要访问的dll文件中的相同事件。

1 个答案:

答案 0 :(得分:1)

您应该正在观看拖放事件。请查看the docs from Microsoft,因为主题非常广泛。