虽然上篇博文已经发过图了,但为方便了解,再发一次操作界面图,发个设计图吧
UI就这样,根据自己需要设置各控件参数,因为要显示数据,我设置了打开时最大化,dataGridView和checkedListBox会随窗体变化自动伸缩的。
SelectData这个窗体控件多了点,而且设置逻辑关系有点小复杂,不满足部分条件,有些控件是不可见不可用的。
先看看初始化窗体的代码
private void SelectData_Load(object sender, EventArgs e)//加载窗体函数,初始化窗体
{
if (File.Exists(@"Res\Config.xml"))
{
XElement XE = XElement.Load(@"Res\Config.xml").Element("Config");
SelectTop = XE.Element("SelectTop").Value;
this.Text = XE.Element("Title").Value;
this.Icon = new Icon(@"Res\" + XE.Element("Ico").Value + ".ico");
}
else
{
MessageBox.Show("导出工具不完整,部分组件丢失.", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
DataOperation.Xml.SetRunFile(null);
Environment.Exit(0);
}
checkBox1.Text = "只列出前"+SelectTop+"条记录";
DataTable DT = DataOperation.Sql.GetDatabase();
comboBox2.DataSource = DT;
comboBox2.DisplayMember = "name";
comboBox2.ValueMember = "name";
if (DT.Rows.Count <= 1)
{
this.Hide();
MessageBox.Show("亲,你弄错服务器了吧,没发现任何用户数据库!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
DataOperation.Xml.SetRunFile(null);
Environment.Exit(0);
}
LoadTable();
LoadSqlCmd();
comboBox3.Hide();
button5.Hide();
checkedListBox1.Hide();
dataGridView1.Hide();
toolStripStatusLabel1.Text = "尚未加载数据!";
}
先校验一下Config.xml文件,修改窗体的标题和图标。
接下来使用DataOperation.Sql.GetDatabase()这个函数读取服务器所有数据库,并绑定在comboBox2,如果没有用户数据库,就退出程序。
这个函数在《SQL数据库读取数据库名、表名和字段名系列操作》博文中讲过,这里不多说了。
LoadTable()和LoadSqlCmd()分别是初始化常见表和常见命令两个comboBox的函数,因为别的控件还用到,所以写成了函数。
private void LoadTable()//为comboBox1加载数据,加载常见表
{
DataTable DT = DataOperation.Xml.GetTable();
comboBox1.DataSource = DT;
comboBox1.DisplayMember = "Trip";
comboBox1.ValueMember = "ID";
if (DT.Rows.Count <= 1)
comboBox1.Enabled = false;
else
comboBox1.Enabled = true;
}
private void LoadSqlCmd()//为comboBox4加载数据,加载常见命令
{
DataTable DT = DataOperation.Xml.GetSqlCmd();
comboBox4.Data