1. 我们来接着使用DataGridView,在上一篇关于类似QQ登录的文章里我们已经讲述了
怎么初步使用DataGridView来显示数据库里的数据,接下来我们来讨论怎么实现在
DataGridView里实现对一行或多行的数据删除以及对一行的数据添加。看下列代码:
SqlConnection myconnection;
SqlCommand mycommand;
SqlDataReader mydatareader;
DataTable table;
//使窗口在载入后就显示数据库里的所有信息(类似QQ登录的文章里我们已经
讲述)
private void DataGridView窗口_Load(object sender, EventArgs e)
{
myconnection = new SqlConnection("Data Source=.;Initial
Catalog=mydata;Integrated Security=True");
myconnection.Open();
mycommand = new SqlCommand("select * from xueshengxinxi",
myconnection);
mydatareader = mycommand.ExecuteReader();
table = new DataTable();
table.Load(mydatareader);
dataGridView1.DataSource = table;
myconnection.Close();
mydatareader.Close();
}
private void 删除_Click(object sender, EventArgs e)
{
myconnection = new SqlConnection("Data Source=.;Initial
Catalog=mydata;Integrated Security=True");
myconnection.Open();
var row = dataGridView1.SelectedRows; //dataGridView的
SelectedRows属性返回的是用户选择了的行所构成的集合
if (row.Count == 0) //如果集合的计数为0,说明集合row里的元素个数
为0,就是用户一行也没选。
{
MessageBox.Show("请先选择行,再删除!");
}
else
{
for (int i = 0; i < row.Count; i++) //要完成多行删除可以用循
环来完成,@xuehao的值是从集合row里第row[i]行第一个单元格Cells[0]获取的,因为此
处学号总为第一个单元格,再转化成字符串赋值给zhujian,zhujian再赋值给@xuehao提
供删除条件,直到删除完用户所选的行。
{
string zhujian =Convert.ToString(row[i].Cells[0].Value);
mycommand = new SqlCommand("delete from xueshengxinxi
where [学号]=@xuehao", myconnection);
mycommand.Parameters.AddWithValue("@xuehao", zhujian);
int abc= mycommand.ExecuteNonQuery();
}
MessageBox.Show(String.Format("删除{0}成功,请刷新!",abc));
}
myconnection.Close();
//String.Format() winform中的console.writeline()
}
//刷新代码与显示数据库所有数据的代码一样
private void 刷新_Click(object sender, EventArgs e)
{
myconnection = new SqlConnection("Data Source=.;Initial
Catalog=mydata;Integrated Security=True");
myconnection.Open();
mycommand = new SqlCommand("select * from xueshengxinxi",
myconnection);
mydatareader = mycommand.ExecuteReader();
table = new DataTable();
table.Load(mydatareader);
dataGridView1.DataSource = table;
myconnection.Close();
mydatareader.Close();
}
//由于只有用户选中一行的时候集合row才有值,所以在添完信息要添加的时候,用户必
须选中该行才能使集合row有值,这样才能提取每个单元格的值,才能给添加条件赋值,
这时候总为row[0],因为只选了一行。其实要完成多行添加可以用dataGridView的列的
集合Columns[i]与行的集合row[j]进行嵌套循环即可。
private void 添加一行_Click(object sender, EventArgs e)
{
myconnection = new SqlConnection("Data Source=.;Initial Catalog=mydata;Integrated Security=True");
myconnection.Open();
var row = dataGridView1.SelectedRows;
if (row.Count != 0)
{
string xuehao = Convert.ToString(row[0].Cells[0].Value);
string xingming = Convert.ToString(row[0].Cells[1].Value);
string xuexiao = Convert.ToString(row[0].Cells[2].Value);
string xueyuan = Convert.ToString(row[0].Cells[3].Value);
string zhuanye = Convert.ToString(row[0].Cells[4].Value);
string mima = Convert.ToString(row[0].Cells[5].Value);
mycommand = new SqlCommand("insert into xueshengxinxi values (@xh,@xm,@xx,@xy,@zy,@mm) ", myconnection);
mycommand.Parameters.AddWithValue("@xh", xuehao);
mycommand.Parameters.AddWithValue("@xm", xingming);
mycommand.Parameters.AddWithValue("@xx", xuexiao);
mycommand.Parameters.AddWithValue("@xy", xueyuan);
mycommand.Parameters.AddWithValue("@zy", zhuanye);
mycommand.Parameters.AddWithValue("@mm", mima);
mydatareader = mycommand.ExecuteReader();
mydatareader.Close();
MessageBox.Show("添加成功请刷新!");
}
else
{
MessageBox.Show("请选中你所要添加的那行");
}
myconnection.Close();
}
最后mycommand = new SqlCommand("insert into xueshengxinxi values
(@xh,@xm,@xx,@xy,@zy,@mm) ", myconnection); @是必须加的
2.VS中一些控件的使用
DataGridView
我们继续来讲dataGridView的使用,单击dataGridView右边的▲,可以进行编辑列,在
添加列的页眉文本里就是列的名称,添加完后就可以设置该列的宽度及是否冻结等,值得
一提的是:DataPropertyName处是让你填你所创建的列显示的是数据库里哪个字段的内
容。▲中还可以选择是否在父容器中停靠。
CheckBox
单选框,很值得一提的是:如果多个单选框放在一个容器中(如Panel)具有排斥性,即
选了一个就不能选其他的,我们可以利用这一点用在用户性别的注册上,用到CheckBox的
Checked属性,该属性是bool值,选中返回true,否则返回false。
var sex =CheckBox.Checked?"男":"女";
然后将sex加到 mycommand.Parameters.AddWithValue("@xingbie", sex);中
NumbericUpDown
选择数字控件,可设置其最大值。此项可用在用户年龄的的获取上(可防止用户乱填)
但其Value值不是int型的: int age = (int)numericupdown.value
WebBrowser
调用IE内核的的浏览器控件,可以加一个文本框和一个按钮构成一个简易的浏览器
其中按钮的事件为 string url =textBox1.Text.Trim();
this.webBrowser1.Navigate(url);
Form
要使窗口不能改变大小,只要将其最大窗口和最小窗口值设成同样大小即可。
智能ABC输入法
在智能ABC输入法中输入v1 → v9 中的任意一个会很多使用的特殊符号
TabContral
分页容器控件,类似于桌面属性里的那种。
TreeView
数控件,类似于资源管理器的那种。
ComBox
下拉选择控件
CheckedListBox
选择列表框,多个CheckBox的组合,与combox、TabContral都要在▲中添加项。
MaskedTextBox
限制文本控件,是一个有许多规范限制的TextBox,在▲中设置掩码。
Tooltip
工具提示控件,加入后别的控件就多个Tooltip属性,在其后可以设置当鼠标放在该控件
上时所显示的提示文本。至于提示的时长及样式要在Tooltip控件中设置。
每个控件都有一个tabindex属性,是用来设置用户在按Tab键时焦点的位置。还可以单
击vs工具栏的最后一项来设置各控件的tabindex的值。