从文本框接收数据并从radiobutton c#接收数据

时间:2012-08-07 07:49:28

标签: c# radio-button

enter image description here

如上图所示,有3种单选按钮和一个文本框。为了用户搜索数据,用户需要填写文本框并选择要搜索的类型。这些数据将以另一种形式出现。

这是我在搜索表单中的代码。

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();   
            }        
        }
    }
}

这是我在viewForm中查看的代码。

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收到用户输入填写,但我不知道如何检索用户选择的类型。有办法吗?

2 个答案:

答案 0 :(得分:1)

我会组织检查选择的单选按钮:

  1. 对于每个单选按钮,使用数值(0,1,2等)填充Tag属性。
  2. 使用相应的值创建枚举。
  3. 所有单选按钮的Click事件设置相同的事件处理程序。
  4. 在事件处理程序中检查Tag单选按钮的sender值。
  5. 所以,这是表格的示例代码:

    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());
        }
    }
    

    好处:您可以轻松添加任意数量的单选按钮,更改它们等,而无需更改支持代码。并且您可以使用所选值而无需任何关于单选按钮的知识

答案 1 :(得分: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;中的值