دوست عزيز شما نبايد از SqlDataReader استفاده كنيد بايد از SqlDataAdapter استفاده كني كه كدش همانند SqlCommand هستش در اونجا مي توني به SqlDataAdapter فرمان بدي كه DataTable پر كنه چون SqlDataReader قابليت Fill نداره شما بايد حتما از SqlDataAdapter استفاده كنيد. نمونه كدش رو هم مي زارم خودت مي توني Public يا Private بودنش نسبت به كلاست استفاده كني .
SqlConnection con = new SqlConnection(@"Data Source=(Address Server);Initial Catalog=(Database Name);Persist Security Info=True;User ID=(UserName);Password=(Password)");
SqlDataAdapter sda = new SqlDataAdapter("select table_name as Name from INFORMATION_SCHEMA.Tables", con);
DataTable ds = new DataTable();
sda.Fill(ds);
dataGridView1.DataSource = ds;