2012-08-07 11 views
1

enter image description hereполучать данные из текстового поля и значения из радиокнопки C#

, как вы можете видеть на картинке выше, есть 3types кнопки радио и текстовое поле. для того, чтобы пользователь мог искать данные, пользователю необходимо заполнить текстовое поле и выбрать тип поиска. Эти данные появятся в другой форме.

это мой код в форме поиска.

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms;  
using System.Xml; 
using System.Xml.Linq; 

namespace SliceLink 
{ 
    public partial class SearchForm : Form 
    { 
     public Form2() 
     { 
      InitializeComponent(); 
     } 

     private void panel1_Paint(object sender, PaintEventArgs e) 
     { 

     } 

     string _radio; 
     public string radio 
     { 
      get { return this._radio; } 
      set { this._radio = value; } 
     } 

     public void button1_Click(object sender, EventArgs e) 
     { 
      //RadioButton rb = (RadioButton)sender; 
      if (textBox1.Text == "") 
       MessageBox.Show("Please enter keyword to search"); 
      else 
      {        
       Form3 form3 = new Form3(textBox1.Text); 
       form3.Show(); 
      }   
     } 
    } 
} 

это мой код для просмотра в форматеForm.

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms;  
using System.Xml; 
using System.Xml.Linq; 

namespace SliceLink 
{ 
    public partial class ViewForm : Form 
    {  
     public Form3(string sTEXT) 
     { 
      InitializeComponent(); 
      XmlDocument xml = new XmlDocument();    
      xml.Load("C:\\Users\\HDAdmin\\Documents\\SliceEngine\\SliceEngine\\bin\\Debug\\saya.xml"); 
      XmlNodeList xnList = xml.SelectNodes("/Patient/Patient/Name"); 
      //XmlNodeList xnList = xml.SelectNodes(sTEXT); 
      foreach (XmlNode xn in xnList) 
      { 
       string name = xn.InnerText;     
       textBox1.Text = name; 
      } 
     } 
    } 
} 

я могу получить пользовательский ввод заполнить textbox, но я не знаю, как получить то, что пользователь типа выбрать. есть ли способ?

ответ

0

Вы можете создать enum типа для различных вариантов, а затем создать общественную property на форме, содержащей радиокнопку и в зависимости от которых один выбрано возвращают соответствующее enum значение.

Таким образом, вы получите что-то вроде:

public enum FindType { DATE, ID, ALL } 

в вашем SearchForm:

public FindType FindGrouping 
{ 
    get 
    { 
     if (radioButtonDate.Checked) 
     return FindType.DATE; 
     // ... etc. 
} 

и получить значение в вашем ViewForm с searchFormInstance.FindGrouping;

+1

Плохой подход, поскольку изменения в пользовательском интерфейсе требуют изменений в коде. –

+0

Хороший звонок! Я быстро погубил! ;) –

1

Я бы организовать проверки выбранной кнопки радио следующий путь:

  1. Для каждого переключателя введите значение Tag с числовыми значениями (0, 1, 2 и т. Д.).
  2. Создать перечисление с соответствующими значениями.
  3. Установите тот же обработчик события для Click событие все радиокнопки.
  4. Проверить Tag значение sender радио кнопка в обработчике события.

Итак, вот пример кода формы:

internal enum SearchType 
{ 
    All = 0, Date = 1, Id = 2 
} 

public partial class MainForm : Form 
{ 
    private SearchType _selectedSearchType = SearchType.All; 

    private void searchButton_Click(object sender, EventArgs e) 
    { 
     // Use _selectedSearchType to do search. 
    } 

    private void radioButton_Click(object sender, EventArgs e) 
    { 
     _selectedSearchType = (SearchType)Enum.Parse(typeof(SearchType), ((Control)sender).Tag.ToString()); 
    } 
} 

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

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