I'm not exactly sure what you are trying to do here, your code doesn't make a lot of sense.
1) You have a loop, through all of the rows returned from your database.
2) You read the row value, and add it to the StringBuilder, along with a newline.
3) You then convert it to a string, and enter a new loop.
4) In this loop, you load all the elements of an array with the string, and kill the StringBuilder, by resetting the length.
Why have the StringBuilder at all? You code is the equivalent of:
if (rdr.HasRows)
{
while (rdr.Read())
{
for (int i = 0; i < module_name_menustrip.Length; i++)
{
module_name_menustrip[i] = ((string)rdr["modname_vc"]).ToString() + "\n";
MessageBox.Show(module_name_menustrip[i]);
count1++;
}
}