一、Timer控件
Timer实际就是一个线程控件。
属性:Enabled 是否被启用
Interval 多长时间执行一次控件中的代码
事件: Tick 事件中放要执行的代码。
利用Timer控件可以实现即时聊天功能。动态的从数据库查询别人发的信息展示到聊天框中。
二、三级联动
实体类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace WindowsFormsApplication2
{
public class China
{
private string _AreaCode; public string AreaCode
{
get { return _AreaCode; }
set { _AreaCode = value; }
}
private string _AreaName; public string AreaName
{
get { return _AreaName; }
set { _AreaName = value; }
}
private string _ParentAreaCode; public string ParentAreaCode
{
get { return _ParentAreaCode; }
set { _ParentAreaCode = value; }
} }
}
数据操作类:
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text; namespace WindowsFormsApplication2
{
public class ChinaData
{
SqlConnection conn = null;
SqlCommand cmd = null; public ChinaData()
{
conn = new SqlConnection("server=.;database=Data0216;user=sa;pwd=123");
cmd = conn.CreateCommand();
} //通过一个父级编号,查询该父级编号对应的地区,放到一个集合中去。
public List<China> Select(string pcode)
{
List<China> clist = new List<China>();
cmd.CommandText = "select *from ChinaStates where ParentAreaCode = @a";
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@a", pcode);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
China c = new China();
c.AreaCode = dr[].ToString();
c.AreaName = dr[].ToString();
c.ParentAreaCode = dr[].ToString(); clist.Add(c);
}
conn.Close();
return clist;
}
}
}
后台代码
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; namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent(); //调用方法绑定所有省
Bind("", comboBox1);
//绑定所有选中省下面的市,selectvalue是绑定数据源给程序看的value中的选中的内容,和数据库有关。
Bind(comboBox1.SelectedValue.ToString(), comboBox2);
//绑定所有选中市下面的区县
Bind(comboBox2.SelectedValue.ToString(), comboBox3); } //数据绑定方法(给我一个地区父级编号,绑定到相应的Combox中去),需要一个地区父级编号和一个Combox对象两个参数
public void Bind(string pcode, ComboBox cb)
{
//给一个父级编号,把该父级编号查到的地区放到集合clist中去
List<China> clist = new ChinaData().Select(pcode); //绑定Combox的数据源
cb.DataSource = clist;
cb.DisplayMember = "AreaName";
cb.ValueMember = "AreaCode";
} //Combox1选中内容改变时,Combox2和Combox3中的数据源相应的改变。
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{ Bind(comboBox1.SelectedValue.ToString(), comboBox2);
if (comboBox2.SelectedValue != null)
{
Bind(comboBox2.SelectedValue.ToString(), comboBox3);
}
} //Combox2中选中内容改变时,Combox3中的数据源响应的改变。
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
Bind(comboBox2.SelectedValue.ToString(), comboBox3);
}
}
}
三、权限设置
所谓权限设置就是根据登录用户帐号的不同,该帐号对应显示的操作功能不同
实现方法:在数据库的用户表中增加字段进行权限的区分,根据从数据库表中查询到的数据进行相应的