在 ASP.NET 開發中,常需要動態載入系統可用的顏色與字體,或是快速取得資料庫連線字串。本文將透過三個實用範例,示範如何利用反射列舉所有顏色、一行程式碼填充 WinForms ComboBox 字體,以及使用 .udl 檔案輕鬆產生連線字串。
想要在 Windows Forms 應用程式中列出電腦所有已安裝字體,只需一行程式碼即可完成:
comboBox1.Items.AddRange(FontFamily.Families);
FontFamily.Families 靜態屬性會傳回系統中所有字體家族的陣列,直接指派給 ComboBox 的 Items 集合,即可讓使用者挑選字體。
.NET Framework 在 System.Drawing.Color 結構中定義了許多靜態屬性代表預設顏色(如 Red、Blue、AliceBlue 等)。我們可以利用反射動態取得這些屬性,並排除 Transparent 與 Empty 兩個特殊值,最後將顏色名稱加入 DropDownList:
PropertyInfo[] properties = typeof(Color).GetProperties(BindingFlags.Public | BindingFlags.Static);
ArrayList colors = new ArrayList();
foreach (PropertyInfo prop in properties)
{
Color color = (Color)prop.GetValue(null, null);
if (color == Color.Transparent || color == Color.Empty) continue;
try
{
ddlList.Items.Add(prop.Name); // 只加入顏色名稱
}
catch { /* 忽略轉換失敗的項目 */ }
}
這段程式碼適用於 ASP.NET Web Forms 專案,ddlList 為頁面上的 <asp:DropDownList> 控制項 ID。
不想手寫連線字串?Windows 內建的「資料連結屬性」對話框可幫你產生標準 OLE DB 連線字串:
.udl(例如 myDB.udl)。Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=MyDB;Data Source=MyServerProvider=SQLOLEDB.1; 替換為 Server=localhost; 等標準關鍵字,以符合 ADO.NET SqlConnection 格式。這招在快速原型開發或除錯時非常實用,避免拼字錯誤導致連線失敗。
善用反射列舉型別靜態成員、內建對話框產生連線字串,能大幅減少硬編碼與手動維護的負擔。下次需要動態載入顏色、字體或連線資訊時,不妨嘗試這些技巧。