Have you tried setting the SelectedValue inside the BindingContextChanged (or DataBindingComplete) event, so that the value is applied after the ComboBox has finished binding? For example:
ComboBox comboBox = new ComboBox();
comboBox.DisplayMember = "varName";
comboBox.ValueMember = "varId";
comboBox.DataSource = drs.CopyToDataTable();
comboBox.BindingContextChanged += (s, e) =>
{
    comboBox.SelectedValue = 12;
};