As far as I can see in this code snippet, the string[,] arr1 is a complete overkill: you only use [...,0], [...,1], and [...,2].
In addition, the [...,2] is never assigned, but you use it in setting the selection - won't work neither.
Forget about this two-dimensional array and use plain simple instances for the currently read items. You might remember the first for selection, but this could be done by simply select the first element in the combo box.
[EDIT]
Now that you have tired your version, here a possible approach:
List<Tuple<string, int>> data = new List<Tuple<string, int>>()
{ new Tuple<string, int>("select", 0) };
...
var conn = ClsConnection.Conn;
using (SqlCommand cmd = new SqlCommand("SELECT * FROM gen_Master", conn))
using (SqlDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
data.Add(new Tuple<string, int>(dr[1].ToString(),
int.Parse(dr[0].ToString())));
}
}
comboBox1.DataSource = data;
comboBox1.DisplayMember = "Item1";
comboBox1.ValueMember = "Item2";
comboBox1.SelectedIndex = comboBox1.Items.Count > 1 ? 1 : 0;
Cheers
Andi