我正在尝试创建一个允许用户选择字体系列的控件,然后从该字体系列中选择一个字符。以下是我要实现的示例。
用字体系列列表填充组合框很容易:
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的每个字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51988715/