![](/img/trans.png)
[英]Using a relative path for a database file in c#, visual studio 2013
[英]C# combobox with fonts using Datasource Visual Studio 2013
我有一個帶有ComboBox
的表單。 我想用系統上可用的字體填充它,並讓用戶選擇這些選項之一。
我尋找了實現此目的的不同方法,並使用了這個問題和答案來為ComboBox
加載所有字體: 用可用字體列表填充ComboBox。
這是我目前有效的代碼:
form.comboBox2.Items.Clear();
System.Drawing.Text.FontCollection fontcoll = new System.Drawing.Text.InstalledFontCollection();
foreach (FontFamily font in fontcoll.Families)
{
form.comboBox2.Items.Add(font.Name);
}
但是現在我試圖改用DataSource屬性,並將System.Drawing.Text.InstalledFontCollection
導入到我的項目中作為數據源。
這是設計器的代碼:
//
// comboBox2
//
this.comboBox2.DataSource = this.installedFontCollectionBindingSource;
this.comboBox2.FormattingEnabled = true;
this.comboBox2.Location = new System.Drawing.Point(16, 44);
this.comboBox2.Name = "comboBox2";
this.comboBox2.Size = new System.Drawing.Size(144, 21);
this.comboBox2.TabIndex = 9;
this.comboBox2.SelectedIndexChanged += new System.EventHandler(this.comboBox2_SelectedIndexChanged);
然后在表單的初始化中,將默認字體名稱設置為Times New Roman。
form.comboBox2.Text = "Times New Roman"
我認為這足以填充ComboBox
並選擇Times New Roman,但顯然還不夠。 它將顯示Times New Roman,但是該框為空。
我想獲得什么幫助:
1)如何使數據源填充ComboBox?
2)是否有一種簡單的方法可以強制用戶從框中選擇一個條目,而不輸入列表中沒有的其他值(類似於VBA用戶窗體中的“ MatchRequired”屬性)?
提前致謝。
您應該首先獲得所有已安裝字體系列的列表,然后將列表設置為ComboBox
DataSource
。 您還可以設置DropDownStyle
組合框來DropDownList
。
private void Form1_Load(object sender, EventArgs e)
{
this.comboBox1.DataSource = new InstalledFontCollection().Families;
this.comboBox1.DisplayMember = "Name";
this.comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
this.comboBox1.SelectedIndexChanged += comboBox1_SelectedIndexChanged;
}
您可以從ComboBox
SelectedValue
中獲取選定的字體系列。 例如:
void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.comboBox1.SelectedValue != null)
this.Font = new Font((FontFamily)this.comboBox1.SelectedValue, this.Font.Size);
}
您可以使用 :
private void Form1_Load(object sender, EventArgs e)
{
FontFamily[] fontArray = FontFamily.Families;
foreach (FontFamily font in fontArray)
{
comboBox1.Items.Add(font.Name);
}
comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
}
使用屬性DropDownStyle
,用戶只能在列表中進行選擇。
例如,如果您想將大小為14的字體分配給Label:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
label1.Font = new Font(comboBox1.Text , 14);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.