我正在尝试创建一个允许用户选择字体系列的控件,然后从该字体系列中选择一个字符。以下是我要实现的示例。

c# - 检索选定的FontFamily的每个字符-LMLPHP

用字体系列列表填充组合框很容易:

FontFamilyCB.DisplayMember = "Name";
foreach (System.Drawing.FontFamily font in System.Drawing.FontFamily.Families)
{
    FontFamilyCB.Items.Add(font);
}


但是,如何遍历并检索给定字体系列中的每个特定字符?

我将在“ DataGridViewButtonCell”上显示每个字符。

最佳答案

这是如何通过将int强制转换为char来显示字符的示例。如果我们在循环中执行此操作(并进行足够的迭代),则最终将显示所有字符。不幸的是,我认为有超过100,000个Unicode字符,这可能比您要显示的字符还要多(并非所有字符都会为每种字体显示某些内容)。

我将由您自己决定要真正显示的内容,但这是一个示例,该示例以按钮网格的形式打印出其中的前3750个(75 x 50)。 *请注意,您添加的控件越多,加载时间就越慢。

只需创建一个新的WinForms项目并将此代码放入Form_Load事件即可。您可以使用定义的变量来调整网格大小(从而调整加载时间):

private void Form1_Load(object sender, EventArgs e)
{
    int gridWidth = 75;
    int gridHeight = 50;
    int controlSize = 20;

    int row = 0;

    for (int i = 1; i < gridWidth * gridHeight; i++)
    {
        var value = ((char) i).ToString();

        Controls.Add(new Button
        {
            Left = i % gridWidth * controlSize,
            Top = row * controlSize,
            Width = controlSize,
            Height = controlSize,
            Text = value
        });

        if (i % gridWidth == 0) row++;
    }
}


输出量

c# - 检索选定的FontFamily的每个字符-LMLPHP

关于c# - 检索选定的FontFamily的每个字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51988715/

10-11 00:31
查看更多