It is because.first u are seting the data source and then u might be setting the dispaly member and value member.... u can do like this
cmbClassId.DisplayMember = dataSet.Tables[Constants.CLASSES].Columns["ClassName"].ToString();
cmbClassId.ValueMember = dataSet.Tables[Constants.CLASSES].Columns["ClassID"].ToString();
cmbClassId.DataSource = dataSet.Tables[Constants.CLASSES];
This will cause event to occure only once.
dipak