Не разрешайте нулевое значение текстового поля в диалоговом окне пользовательского интерфейса в установщике установки 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.
Пожалуйста, дайте мне решение для проверки и кнопку просмотра
Пожалуйста, ответьте как можно скорее.