2017-01-24 2 views
0

Не уверен, что именно происходит здесь, так как он не дает мне сообщение об ошибке, когда я пытаюсь запустить эту часть кода.C# словарь не работает?

В основном его предполагается поместить текст из словаря в RichTextBox при выборе опции из выпадающего Menue

Как если я выбираю «Outage» из выпадающего списка следует поместить содержимое, что в richtextbox

public partial class Form1 : Form 
{ 
    public Dictionary<string, string> templates = new Dictionary<string, string>(); 

    public Form1() 
    { 
     // Templates 
     templates.Add("Outage", "Server Name: \nTest: \nTest (test): \n"); 
     templates.Add("Out", "test: \nTest: \nTest:"); 
     templates.Add("Custom", @"C:\Users\johnathan_jackson\Downloads\Remedy Tool\Templates\custom templates\test.txt"); 
     templates.Add("Test", "Server Name: \nTest: \nTest: \n"); 
     templates.Add("Basic", "OS: \nIP Address: \nApplications affected: \nWhen did this last work: \n Number of users affected: \nSpecific error message: \nTroubleshooting steps taken \nDetailed Resolution \nIf not service resolvable, Why:"); 
     templates.Add("Xerox", "Serial Number (mandatory): \nAsset Number: \nContact Phone Number: \nContact e-mail address: \nFull Address: \nDescription of the Supplies that are needed: \nPart # (if customer has it): \nError message (if any): \nLocation (Building/Floor/etc): \nModel #: \n"); 

     NavigateURL navigateBrowser = new NavigateURL(); 

     InitializeComponent(); 

     Remedy_Automate.AllowNavigation = true; 
     Remedy_Automate.ScriptErrorsSuppressed = true; 
     Remedy_Automate.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(navigateBrowser.DocumentState); 

     // GetInfo from Remedy to these controls 
     navigateBrowser.cIncidentID = incidentID_Entry; 
     navigateBrowser.cEmployeeID = employeeID_Entry; 
     navigateBrowser.cEmployeeName = employeeName_Entry; 
     navigateBrowser.cPhoneNumber = phoneNumber_Entry; 

     navigateBrowser.cNotes = Notes_Entry; 

     getinfo.Click += new System.EventHandler(navigateBrowser.GetInfoClick); 
     sendinfo.Click += new System.EventHandler(navigateBrowser.ModifyInfo); 

     browserTabControl.Selecting += browserTabControl_Selecting; 
     browserTabControl.HandleCreated += browserTabControl_HandleCreated; 

     wTemplates.DropDownStyle = ComboBoxStyle.DropDownList; 

     // set browser control in 'cNavigateURL' class 
     navigateBrowser.BrowserInstance = Remedy_Automate; 
     navigateBrowser.NavigateToUrl("http://fit.honeywell.com/arsys"); 

    }// Form1 

    private void sendinfo_click(object sender, EventArgs e) 
    { 
     string notestext = Notes_Entry.Text; 
     Console.WriteLine(notestext); 
    } 

    private void template_selected(object sender, EventArgs e) 
    { 
     String pTempText = wTemplates.Text; 
     Console.WriteLine(pTempText); 
     switch(pTempText) 
     { 
      case "Outage": 
       Notes_Entry.Text = templates[pTempText]; 
       break; 
      case "Basic": 
      Notes_Entry.Text = templates[pTempText]; 
       break; 
      case "Custom": 
       Notes_Entry.Text = templates[pTempText]; 
       break; 
      case "Out": 
       Notes_Entry.Text = templates[pTempText]; 
       break; 
     } 
+1

InitializeComponent(); должен быть на первом месте в конструкторе Form1 –

+1

Какая ошибка вы получаете? Запустили ли вы его в отладчике, чтобы узнать, какие значения переменных возникают, когда вы получаете исключение? –

+4

Помимо всего прочего, вам не нужен этот коммутационный блок. Просто проверьте, содержит ли словарь ключ, и если да, установите его. Обратите внимание, что все блоки вашего случая имеют одинаковый код? – LarsTech

ответ

1

Я не вижу, где вы связываете свой словарь с вашим списком. Вам нужно добавить следующее:

wTemplates.DisplayMember = "Key"; 
wTemplates.ValueMember = "Value"; 
wTemplates.DataSource = new BindingSource(templates, null); 

Я также рекомендовал бы добавить еще одну запись в верхней части словаря, так что пункт 0 не является реальным выбором, такие как («Выбор элемента», «») , Это связано с тем, что событие selected_item будет срабатывать, когда ваш комбинированный блок будет заполнен в первый раз.

Так что ваш код будет выглядеть следующим образом в Form1():

 // Templates 
     templates.Add("Select Item", ""); 
     templates.Add("Outage", @"Server Name: \nTest: \nTest (test): \n"); 
     templates.Add("Out", @"test: \nTest: \nTest:"); 
     templates.Add("Custom", @"C:\Users\johnathan_jackson\Downloads\Remedy Tool\Templates\custom templates\test.txt"); 
     templates.Add("Test", @"Server Name: \nTest: \nTest: \n"); 
     templates.Add("Basic", @"OS: \nIP Address: \nApplications affected: \nWhen did this last work: \n Number of users affected: \nSpecific error message: \nTroubleshooting steps taken \nDetailed Resolution \nIf not service resolvable, Why:"); 
     templates.Add("Xerox", @"Serial Number (mandatory): \nAsset Number: \nContact Phone Number: \nContact e-mail address: \nFull Address: \nDescription of the Supplies that are needed: \nPart # (if customer has it): \nError message (if any): \nLocation (Building/Floor/etc): \nModel #: \n"); 

     wTemplates.DropDownStyle = ComboBoxStyle.DropDownList; 

     wTemplates.SelectedIndexChanged += template_selected; 

     wTemplates.DisplayMember = "Key"; 
     wTemplates.ValueMember = "Value"; 
     wTemplates.DataSource = new BindingSource(templates, null); 

Тогда есть обработчик на самом деле имеют код в нем.

private void template_selected(object sender, EventArgs e) 
    { 
     String pTempText = wTemplates.Text; 
     Console.WriteLine(pTempText); 
     switch (pTempText) 
     { 
      case "Outage": 
       Notes_Entry.Text = templates[pTempText]; 
       break; 
      case "Basic": 
       Notes_Entry.Text = templates[pTempText]; 
       break; 
      case "Custom": 
       Notes_Entry.Text = templates[pTempText]; 
       break; 
      case "Out": 
       Notes_Entry.Text = templates[pTempText]; 
       break; 
     } 
    } 
+0

СПАСИБО! Работает. Такое простое исправление, когда вы смотрите на него ха-ха. Спасибо! – Imcoolyourenot

+0

Я рад, что смог бы помочь, пожалуйста, отметьте это как ответ, если он решит вашу проблему. Благодаря! – JackInMA

Смежные вопросы