public SftpSettings()
        {
            InitializeComponent();
            cbAuthenticationType.DataSource = Enum.GetValues(typeof(AuthenticationType));

            if (!Properties.Settings.Default.SftpSettings.Trim().Equals(""))
            {
                SftpSetting sftpSetting =
                    JsonConvert.DeserializeObject <SftpSetting>(Properties.Settings.Default.SftpSettings);

                txtPassword.Text   = sftpSetting.Password;
                txtHostName.Text   = sftpSetting.HostName;
                txtUsername.Text   = sftpSetting.Username;
                txtPrivateKey.Text = sftpSetting.PrivateKey.Trim().Equals("")?"Private Key": sftpSetting.PrivateKey;
                txtPublicKey.Text  = sftpSetting.PublicKey.Trim().Equals("")? "Public Key":sftpSetting.PublicKey;
                txtPort.Text       = sftpSetting.Port.ToString();

                cbAuthenticationType.SelectedItem = sftpSetting.AuthenticationType;
                txtFacultyName.Text = sftpSetting.FacilityName;
            }
            else
            {
                cbAuthenticationType.SelectedItem = AuthenticationType.Password;
            }
        }
        private void btnSave_Click(object sender, EventArgs e)
        {
            if (txtHostName.isEmptyOrHint())
            {
                txtHostName.Focus();
                return;
            }

            if (!IsInt(txtPort.Text.Trim()))
            {
                txtPort.Focus();
                return;
            }

            if (txtUsername.isEmptyOrHint())
            {
                txtUsername.Focus();
                return;
            }

            //if(txtPassword.isEmptyOrHint()&&
            //   (txtPrivateKey.Text.Equals("Private Key", StringComparison.CurrentCultureIgnoreCase) ||
            //    txtPublicKey.Text.Equals("Public Key", StringComparison.CurrentCultureIgnoreCase)))
            //{
            //    txtPassword.Focus();
            //    return;
            //}

            SftpSetting newSetting = new SftpSetting
            {
                Username           = txtUsername.Text.Trim(),
                Port               = Convert.ToInt16(txtPort.Text),
                HostName           = txtHostName.Text.Trim(),
                Password           = txtPassword.isEmptyOrHint()?"":txtPassword.Text,
                PrivateKey         = txtPrivateKey.Text.Trim().Equals("Private Key", StringComparison.CurrentCultureIgnoreCase) ?"":txtPrivateKey.Text.Trim(),
                PublicKey          = txtPublicKey.Text.Trim().Equals("Public Key", StringComparison.CurrentCultureIgnoreCase) ? "" : txtPublicKey.Text.Trim(),
                AuthenticationType = (AuthenticationType)cbAuthenticationType.SelectedItem,
                FacilityName       = txtFacultyName.Text
            };

            Properties.Settings.Default.SftpSettings = JsonConvert.SerializeObject(newSetting);
            Properties.Settings.Default.Save();
            MessageBox.Show("Setting Saved!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        private static SftpClient GetUpdatedClient()
        {
            SftpSetting s =
                JsonConvert.DeserializeObject <SftpSetting>(Properties.Settings.Default.SftpSettings);

            //MessageBox.Show(Properties.Settings.Default.SftpSettings);

            switch (s.AuthenticationType)
            {
            case AuthenticationType.Password:
                return(new SftpClient(s.HostName, s.Port, s.Username, s.Password));

            case AuthenticationType.PrivateKey:
                return(new SftpClient(new ConnectionInfo(s.HostName, s.Port, s.Username, GetPrivateKey(s.Username, GetFileName(s.PrivateKey)))));

            case AuthenticationType.PublicKey:
                return(new SftpClient(new ConnectionInfo(s.HostName, s.Port, s.Username, GetPrivateKey(s.Username, GetFileName(s.PrivateKey)))));
            }

            return(null);
        }