Member 12597032 Ответов: 1

Не разрешайте нулевое значение текстового поля в диалоговом окне пользовательского интерфейса в установщике установки VS2013


Привет Команда,
Я генераторной установки для обслуживания окна.
Я хочу дать пользователю возможность упомянуть все данные уровня конфигурации на пользовательском интерфейсе во время установки установки.
Обращаясь ни к одному из сайтов, я могу достичь этого ожидаемого результата, но есть некоторые моификации.
Я могу показать метку и текстовое поле и привязать это значение, сославшись на некоторую ссылку ниже.
Настройка пользовательских интерфейсов и передача пользовательского ввода классам установщика[^]

ScottGu блог по - подсказка/прием: создание заготовок ASP.NET программы установки с vs 2005[^]

Ожидание есть:
1) я хочу сделать проверку означает, что пользователь не сможет нажать на кнопку Далее, сохраняя пустое текстовое поле.
2) теперь пользователь обычно упоминает данные в текстовом поле, вместо этого я хочу дать кнопку обзора, чтобы выбрать путь и заполнить текстовое поле.

Что я уже пробовал:

Это код, который я использую для отображения и привязки значения текстового поля.
 [RunInstaller(true)]
    public partial class ProjectInstaller : System.Configuration.Install.Installer
    {
        public ProjectInstaller()
        {
            InitializeComponent();
        }

        public override void Install(System.Collections.IDictionary stateSaver)
        {
            base.Install(stateSaver);
        }

        public override void Commit(IDictionary savedState)
        {
            base.Commit(savedState);
            try
            {
                AddConfigurationFileDetails();
            }
            catch (Exception e)
            {              
                base.Rollback(savedState);
            }
        }

        private void showParameters()
        {
            StringBuilder sb = new StringBuilder();
            StringDictionary myStringDictionary = this.Context.Parameters;
            if (this.Context.Parameters.Count > 0)
            {
                foreach (string myString in this.Context.Parameters.Keys)
                {
                    sb.AppendFormat("String={0} Value= {1}\n", myString,
                    this.Context.Parameters[myString]);
                }
            }
        }

        private void AddConfigurationFileDetails()
        {
            try
            {
                string LogFilePath = Context.Parameters["LogFilePath"];
                string Customer_Input_Filepath = Context.Parameters["Customer_InputFilePath"];
                string ServerPublicKeyPath = Context.Parameters["ServerPublicKeyPath"];
                string ClientPrivateKeyPath = Context.Parameters["ClientPrivateKeyPath"];
                string ClientPrivateKeyPassword = Context.Parameters["ClientPrivateKeyPassword"];
                string SFTP_IN_PATH = Context.Parameters["SFTP_IN_PATH"];
                string SFTP_OUT_PATH = Context.Parameters["SFTP_OUT_PATH"];

                string HostName = Context.Parameters["HostName"];
                string PortNo = Context.Parameters["PortNo"];
                string UserName = Context.Parameters["UserName"];
                string CertificateKeyFilePath = Context.Parameters["CertificateKeyFilePath"];
                string PassPhrase = Context.Parameters["PassPhrase"];

                // Get the path to the executable file that is being installed on the target computer  
                string assemblypath = Context.Parameters["assemblypath"];
                string appConfigPath = assemblypath + ".config";

                // Write the path to the app.config file  
                XmlDocument doc = new XmlDocument();
                doc.Load(appConfigPath);

                XmlNode configuration = null;
                foreach (XmlNode node in doc.ChildNodes)
                    if (node.Name == "configuration")
                        configuration = node;

                if (configuration != null)
                {
                    //MessageBox.Show("configuration != null");  
                    // Get the ‘appSettings’ node  
                    XmlNode settingNode = null;
                    foreach (XmlNode node in configuration.ChildNodes)
                    {
                        if (node.Name == "appSettings")
                            settingNode = node;
                    }

                    if (settingNode != null)
                    {
                        //MessageBox.Show("settingNode != null");  
                        //Reassign values in the config file  
                        foreach (XmlNode node in settingNode.ChildNodes)
                        {
                            //MessageBox.Show("node.Value = " + node.Value);  
                            if (node.Attributes == null)
                                continue;
                            XmlAttribute attribute = node.Attributes["value"];
                            //MessageBox.Show("attribute != null ");  
                            //MessageBox.Show("node.Attributes['value'] = " + node.Attributes["value"].Value);  
                            if (node.Attributes["key"] != null)
                            {
                                //MessageBox.Show("node.Attributes['key'] != null ");  
                                //MessageBox.Show("node.Attributes['key'] = " + node.Attributes["key"].Value);  
                                switch (node.Attributes["key"].Value)
                                {

                                    case "Test":
                                        attribute.Value = Convert.ToString(LogFilePath.Replace("\\", @"\"));
                                        break;
                                    case "LogFilePath":
                                        attribute.Value = Convert.ToString(LogFilePath.Replace("\\", @"\"));
                                        break;

                                    case "Customer_InputFilePath":
                                        attribute.Value = Convert.ToString(Customer_Input_Filepath.Replace("\\", @"\"));// + "\\";
                                        break;

                                    case "ServerPublicKeyPath":
                                        attribute.Value = ServerPublicKeyPath;
                                        break;

                                    case "ClientPrivateKeyPath":
                                        attribute.Value = ClientPrivateKeyPath;
                                        break;

                                    case "ClientPrivateKeyPassword":
                                        attribute.Value = ClientPrivateKeyPassword;
                                        break;

                                    case "SFTP_IN_PATH":
                                        attribute.Value = SFTP_IN_PATH;
                                        break;

                                    case "SFTP_OUT_PATH":
                                        attribute.Value = SFTP_OUT_PATH;
                                        break;

                                    case "HostName":
                                        attribute.Value = HostName;
                                        break;

                                    case "PortNo":
                                        attribute.Value = PortNo;
                                        break;

                                    case "UserName":
                                        attribute.Value = UserName;
                                        break;

                                    case "CertificateKeyFilePath":
                                        attribute.Value = CertificateKeyFilePath;
                                        break;

                                    case "PassPhrase":
                                        attribute.Value = PassPhrase;
                                        break;
                                }
                            }
                        }
                    }
                    if (!string.IsNullOrEmpty(CertificateKeyFilePath))
                    {
                        doc.Save(appConfigPath);
                    }
                    else
                    {
                        
                    }
                }
            }
            catch
            {
                throw;
            }
        }  
    }
	Please give me solution for validation and browse button
Please reply as soon as possible.




Пожалуйста, дайте мне решение для проверки и кнопку просмотра
Пожалуйста, ответьте как можно скорее.

1 Ответов

Рейтинг:
2

Wessel Beulink

Используйте LostFocus в текстовом поле.

private void textbox_LostFocus(object sender, EventArgs e)
{
   //do something to validated the textbox value 
   if (textbox.text = "") 
   {
      btncancel.Enabled = false;
      //if not filled you can directly setfocus on box again so the user can't leave it.
      this.ActiveControl = textbox
   }

   //or do whatever you want...
}


Member 12597032

Как я могу отключить следующую кнопку..?
btncancel. isenabled=false;
этот код не работает..

пожалуйста, дайте ответ вкратце..

Wessel Beulink

btncancel. isenabled-это возвращаемое значение. Конечно, это не работает.
Используйте btncancel. enabled = false, когда txtbox. text = "".

Wessel Beulink

Обновленное решение для вас.

Member 12597032

Привет,

Я беру текстовые поля при создании настроек, которые похожи на текстовые поля (а), текстовые поля(Б), текстовые поля(в)?....Внутри всего этого раздела есть 4 текстовых поля в каждом..... как я могу сгенерировать событие для этих текстовых полей ???