using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;namespace WindowsApplication4
{
public partial class Form1 : Form
{
public string stuID; //存储学号
public string stuName; //存储姓名
public string stuClass; //存储班别
public string stuDeparment; //存储系别
public string stuXingqu; //存储兴趣
public string strSQL; //储存完整SQL语句 public Form1()
{
InitializeComponent();
} #region 自定义初始连接数据库方法
//该方法用来对2个ComboBox控件赋值;传递2个参数,1个为对象(那一个控件),1个为字符串(按数据表的那一列查询)
private void SQLconn(object comboxOBJ, string ROW)
{
SqlConnection conn = new SqlConnection("server = 20100201-1543; database = studentMessage;uid = sa; PWD=123");
conn.Open();
string strSql = "select DISTINCT " + ROW + " FROM student";
SqlCommand cmd = new SqlCommand(strSql, conn);
SqlDataReader dr = cmd.ExecuteReader(); //此处判断该方法传入的对象参数是否为ComboBox控件
if (comboxOBJ.GetType().ToString() == "System.Windows.Forms.ComboBox")
{
//如果是,则实例化临时对象,用来把数据循环赋值给参数所指定的控件
ComboBox cbo = (ComboBox)comboxOBJ;
while (dr.Read())
{
cbo.Items.Add(dr[0].ToString());
}
}
dr.Close();
conn.Close();
}
#endregion #region 自定义SQL语句查询方法
//该方法传入1个字符串类型的参数,该参数主要为SQL语句
private void SQLSearch(string strSQL)
{
SqlConnection conn = new SqlConnection("server = 20100201-1543; database = studentMessage;uid = sa; PWD=123");
conn.Open();
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(strSQL, conn);
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0].DefaultView;
conn.Close();
}
#endregion #region 初始化界面控件
private void Form1_Load(object sender, EventArgs e)
{ cmbClass.Enabled = false;
cmbDeparment.Enabled = false;
cmbXingqu.Enabled = false;
mtxtID.Enabled = false;
mtxtName.Enabled = false;
}
#endregion #region 当选择时,控件可用,并且对相关控件赋值; //学号 CheckedBox_CheckedChanged事件
private void ckbID_CheckedChanged(object sender, EventArgs e)
{
if (ckbID.Checked == true)
{
mtxtID.Enabled = true;
//只允许输入9位数字
mtxtID.Mask = "000000000";
mtxtID.Focus();
}
else
{
mtxtID.Enabled = false;
mtxtID.Text = "";
}
} //姓名 CheckedBox_CheckedChanged事件
private void ckbName_CheckedChanged(object sender, EventArgs e)
{
if (ckbName.Checked == true)
{
mtxtName.Enabled = true;
mtxtName.Focus();
}
else
{
mtxtName.Enabled = false;
mtxtName.Text = "";
}
} //班别 CheckedBox_CheckedChanged事件
private void ckbClass_CheckedChanged(object sender, EventArgs e)
{
if (ckbClass.Checked == true)
{
cmbClass.Enabled = true;
//利用上面自定义的方法,为班别的ComboBox控件赋值
SQLconn(cmbClass, " 班别 ");
cmbClass.Focus();
cmbClass.AutoCompleteMode = AutoCompleteMode.Suggest;
cmbClass.AutoCompleteSource = AutoCompleteSource.ListItems;
}
else
{
cmbClass.Enabled = false;
cmbClass.Items.Clear();
}
} //系别 CheckedBox_CheckedChanged事件
private void ckbDeparment_CheckedChanged(object sender, EventArgs e)
{
if (ckbDeparment.Checked == true)
{
cmbDeparment.Enabled = true;
//利用上面自定义的方法,为商品名称的ComboBox控件赋值
SQLconn(cmbDeparment, " 系别 ");
cmbDeparment.Focus();
cmbDeparment.AutoCompleteMode = AutoCompleteMode.Suggest;
cmbDeparment.AutoCompleteSource = AutoCompleteSource.ListItems; }
else
{
cmbDeparment.Enabled = false;
cmbDeparment.Items.Clear();
}
} //兴趣 CheckedBox_CheckedChanged事件
private void ckbXingqu_CheckedChanged(object sender, EventArgs e)
{
if (ckbXingqu.Checked == true)
{
cmbXingqu.Enabled = true;
//利用上面自定义的方法,为商品名称的ComboBox控件赋值
SQLconn(cmbXingqu, " 兴趣 ");
cmbXingqu.Focus();
cmbXingqu.AutoCompleteMode = AutoCompleteMode.Suggest;
cmbXingqu.AutoCompleteSource = AutoCompleteSource.ListItems; }
else
{
cmbXingqu.Enabled = false;
cmbXingqu.Items.Clear();
}
}
#endregion #region toolTip控件相关设置
private void mtxtID_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
{
toolTip1.ToolTipTitle = "学号查询";
toolTip1.Show("只能输入9位数字编号!", mtxtID, mtxtID.Location, 5000);
mtxtID.SelectAll();
mtxtID.SelectionStart = 0;
mtxtID.Focus();
} private void mtxtName_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
{
toolTip1.ToolTipTitle = "姓名查询";
toolTip1.Show("请确认输入的为学生姓名!", mtxtName, mtxtName.Location, 5000);
mtxtName.SelectAll();
mtxtName.SelectionStart = 0;
mtxtName.Focus();
}
#endregion #region 查找按钮单击事件
private void btn1_Click(object sender, EventArgs e)
{
if (mtxtID.Text != "")
{
stuID = "学号 LIKE '%" + mtxtID.Text + "%'";
}
else
{
//SQL中WHERE子查询的永真(true)语句
stuID = "1=1";
} if (mtxtName.Text != "")
{
stuName = "姓名 LIKE '%" + mtxtName.Text + "%'";
}
else
{
//SQL中WHERE子查询的永真(true)语句
stuName = "1=1";
} //注意:此处要做个判断,要先确认控件激活状态才能进行进一步的判断其值是否为空
if (cmbClass.Enabled == true)
{
if (cmbClass.SelectedItem.ToString() != "")
{
stuClass = "班别 LIKE '%" + cmbClass.SelectedItem.ToString() + "%'";
}
}
else
{
stuClass = "1=1";
} if (cmbDeparment.Enabled == true)
{
if (cmbDeparment.SelectedItem.ToString() != "")
{
stuDeparment = "系别 LIKE '%" + cmbDeparment.SelectedItem.ToString() + "%'";
}
}
else
{
stuDeparment = "1=1";
} if (cmbXingqu.Enabled == true)
{
if (cmbXingqu.SelectedItem.ToString() != "")
{
stuXingqu = "兴趣 LIKE '%" + cmbXingqu.SelectedItem.ToString() + "%'";
}
}
else
{
stuXingqu = "1=1";
} strSQL = "SELECT * FROM student WHERE " + stuID + " and " + stuName + " and " + stuClass + " and " + stuDeparment + " and " + stuXingqu;
SQLSearch(strSQL);
toolStripStatusLabel1.Text = "查询到 " + Convert.ToString(dataGridView1.Rows.Count - 1) + "条数据";
strSQL = "";
} private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
#endregion
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;namespace WindowsApplication4
{
public partial class Form1 : Form
{
public string stuID; //存储学号
public string stuName; //存储姓名
public string stuClass; //存储班别
public string stuDeparment; //存储系别
public string stuXingqu; //存储兴趣
public string strSQL; //储存完整SQL语句 public Form1()
{
InitializeComponent();
} #region 自定义初始连接数据库方法
//该方法用来对2个ComboBox控件赋值;传递2个参数,1个为对象(那一个控件),1个为字符串(按数据表的那一列查询)
private void SQLconn(object comboxOBJ, string ROW)
{
SqlConnection conn = new SqlConnection("server = 20100201-1543; database = studentMessage;uid = sa; PWD=123");
conn.Open();
string strSql = "select DISTINCT " + ROW + " FROM student";
SqlCommand cmd = new SqlCommand(strSql, conn);
SqlDataReader dr = cmd.ExecuteReader(); //此处判断该方法传入的对象参数是否为ComboBox控件
if (comboxOBJ.GetType().ToString() == "System.Windows.Forms.ComboBox")
{
//如果是,则实例化临时对象,用来把数据循环赋值给参数所指定的控件
ComboBox cbo = (ComboBox)comboxOBJ;
while (dr.Read())
{
cbo.Items.Add(dr[0].ToString());
}
}
dr.Close();
conn.Close();
}
#endregion #region 自定义SQL语句查询方法
//该方法传入1个字符串类型的参数,该参数主要为SQL语句
private void SQLSearch(string strSQL)
{
SqlConnection conn = new SqlConnection("server = 20100201-1543; database = studentMessage;uid = sa; PWD=123");
conn.Open();
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(strSQL, conn);
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0].DefaultView;
conn.Close();
}
#endregion #region 初始化界面控件
private void Form1_Load(object sender, EventArgs e)
{ cmbClass.Enabled = false;
cmbDeparment.Enabled = false;
cmbXingqu.Enabled = false;
mtxtID.Enabled = false;
mtxtName.Enabled = false;
}
#endregion #region 当选择时,控件可用,并且对相关控件赋值; //学号 CheckedBox_CheckedChanged事件
private void ckbID_CheckedChanged(object sender, EventArgs e)
{
if (ckbID.Checked == true)
{
mtxtID.Enabled = true;
//只允许输入9位数字
mtxtID.Mask = "000000000";
mtxtID.Focus();
}
else
{
mtxtID.Enabled = false;
mtxtID.Text = "";
}
} //姓名 CheckedBox_CheckedChanged事件
private void ckbName_CheckedChanged(object sender, EventArgs e)
{
if (ckbName.Checked == true)
{
mtxtName.Enabled = true;
mtxtName.Focus();
}
else
{
mtxtName.Enabled = false;
mtxtName.Text = "";
}
} //班别 CheckedBox_CheckedChanged事件
private void ckbClass_CheckedChanged(object sender, EventArgs e)
{
if (ckbClass.Checked == true)
{
cmbClass.Enabled = true;
//利用上面自定义的方法,为班别的ComboBox控件赋值
SQLconn(cmbClass, " 班别 ");
cmbClass.Focus();
cmbClass.AutoCompleteMode = AutoCompleteMode.Suggest;
cmbClass.AutoCompleteSource = AutoCompleteSource.ListItems;
}
else
{
cmbClass.Enabled = false;
cmbClass.Items.Clear();
}
} //系别 CheckedBox_CheckedChanged事件
private void ckbDeparment_CheckedChanged(object sender, EventArgs e)
{
if (ckbDeparment.Checked == true)
{
cmbDeparment.Enabled = true;
//利用上面自定义的方法,为商品名称的ComboBox控件赋值
SQLconn(cmbDeparment, " 系别 ");
cmbDeparment.Focus();
cmbDeparment.AutoCompleteMode = AutoCompleteMode.Suggest;
cmbDeparment.AutoCompleteSource = AutoCompleteSource.ListItems; }
else
{
cmbDeparment.Enabled = false;
cmbDeparment.Items.Clear();
}
} //兴趣 CheckedBox_CheckedChanged事件
private void ckbXingqu_CheckedChanged(object sender, EventArgs e)
{
if (ckbXingqu.Checked == true)
{
cmbXingqu.Enabled = true;
//利用上面自定义的方法,为商品名称的ComboBox控件赋值
SQLconn(cmbXingqu, " 兴趣 ");
cmbXingqu.Focus();
cmbXingqu.AutoCompleteMode = AutoCompleteMode.Suggest;
cmbXingqu.AutoCompleteSource = AutoCompleteSource.ListItems; }
else
{
cmbXingqu.Enabled = false;
cmbXingqu.Items.Clear();
}
}
#endregion #region toolTip控件相关设置
private void mtxtID_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
{
toolTip1.ToolTipTitle = "学号查询";
toolTip1.Show("只能输入9位数字编号!", mtxtID, mtxtID.Location, 5000);
mtxtID.SelectAll();
mtxtID.SelectionStart = 0;
mtxtID.Focus();
} private void mtxtName_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
{
toolTip1.ToolTipTitle = "姓名查询";
toolTip1.Show("请确认输入的为学生姓名!", mtxtName, mtxtName.Location, 5000);
mtxtName.SelectAll();
mtxtName.SelectionStart = 0;
mtxtName.Focus();
}
#endregion #region 查找按钮单击事件
private void btn1_Click(object sender, EventArgs e)
{
if (mtxtID.Text != "")
{
stuID = "学号 LIKE '%" + mtxtID.Text + "%'";
}
else
{
//SQL中WHERE子查询的永真(true)语句
stuID = "1=1";
} if (mtxtName.Text != "")
{
stuName = "姓名 LIKE '%" + mtxtName.Text + "%'";
}
else
{
//SQL中WHERE子查询的永真(true)语句
stuName = "1=1";
} //注意:此处要做个判断,要先确认控件激活状态才能进行进一步的判断其值是否为空
if (cmbClass.Enabled == true)
{
if (cmbClass.SelectedItem.ToString() != "")
{
stuClass = "班别 LIKE '%" + cmbClass.SelectedItem.ToString() + "%'";
}
}
else
{
stuClass = "1=1";
} if (cmbDeparment.Enabled == true)
{
if (cmbDeparment.SelectedItem.ToString() != "")
{
stuDeparment = "系别 LIKE '%" + cmbDeparment.SelectedItem.ToString() + "%'";
}
}
else
{
stuDeparment = "1=1";
} if (cmbXingqu.Enabled == true)
{
if (cmbXingqu.SelectedItem.ToString() != "")
{
stuXingqu = "兴趣 LIKE '%" + cmbXingqu.SelectedItem.ToString() + "%'";
}
}
else
{
stuXingqu = "1=1";
} strSQL = "SELECT * FROM student WHERE " + stuID + " and " + stuName + " and " + stuClass + " and " + stuDeparment + " and " + stuXingqu;
SQLSearch(strSQL);
toolStripStatusLabel1.Text = "查询到 " + Convert.ToString(dataGridView1.Rows.Count - 1) + "条数据";
strSQL = "";
} private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
#endregion
}
}
==========
if (comboxOBJ.GetType()!=null&& comboxOBJ.GetType().ToString() == "System.Windows.Forms.ComboBox")
为什么不直接使用Combobox作为参数,而使用object ?
判断comboxOBJ是否为null
if (cmbClass.SelectedItem.ToString() != "").....
if (cmbDeparment.SelectedItem.ToString() != "").....
if (cmbDeparment.SelectedItem.ToString() != "")
1楼所说的好像不行啊!
cmbDepartment.SelectedIndex != -1出错的地方,改成这样应该可以解决问题。
if (cmbClass.SelectedItem.ToString() != "").....
if (cmbDeparment.SelectedItem.ToString() != "").....
if (cmbDeparment.SelectedItem.ToString() != "")