簡體   English   中英

使用Datasource Visual Studio 2013的C#字體組合框

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM