Assuming the collections of names of merchants, and non-merchants, in the database that you wish the user to have access to during a session remain fixed, I'd seek to minimize loading the ComboBoxes from the database.
I suggest you consider creating two ComboBoxes, one for merchants, one for non-merchants: make them the same size, and set their locations to be the same, and load their contents from the database once.
Then, in the CheckBox.CheckedChanges Event Handler, something like this:
private void cbxSelectNonMerchant_CheckedChanged(object sender, EventArgs e)
{
if (cbxSelectNonMerchant.CheckState == CheckState.Checked)
{
cmbNonMerchant.Visible = true;
cmbMerchant.Visible = false;
}
else
{
cmbMerchant.Visible = true;
cmbNonMerchant.Visible = false;
}
}
This assumes that you would start your application with the 'cbxSelectNonMerchant CheckBox.CheckState set to 'Unchecked, the 'cmbMerchant CombobBox visible, and 'cmbNonMerchant hidden.