如果您输入多行文本框
,我该怎么做呢?ABCDE
&安培;
ABCDE
因此,大E在
如果它们在同一行,我希望它们垂直排列。
另外,使用winforms
答案 0 :(得分:30)
您可以将文本框中的字体设置为monospaced吗?
在代码中,保持与默认字体相同的大小:
textBox.Font = new Font(FontFamily.GenericMonospace, textBox.Font.Size);
或者只是更改设计器中的Font
属性。
答案 1 :(得分:5)
您可以使用固定宽度字体来完成此操作。 Courier系列字体通常是固定宽度。
您可以在属性编辑器中为文本框控件设置字体。例如,您可以将Font属性设置为 Courier New,8.25pt 。
答案 2 :(得分:3)
某些字体对不同的字符使用不同的字符宽度。在这种字体中,“m”将具有比“i”更大的宽度。它们被称为比例字体。这些字体看起来更漂亮,更易于阅读。
所有字符宽度相同的字体称为等宽字体字体。它们通常用于源代码,因为它们允许将行注释等功能对齐到代码右侧。
使用等宽字体!
以下是我用来获取已安装的所有等宽字体列表的代码:
using System;
using System.Drawing;
using System.Runtime.InteropServices;
namespace PE.Rendering {
static class FontHelper {
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
class LOGFONT {
public int lfHeight;
public int lfWidth;
public int lfEscapement;
public int lfOrientation;
public int lfWeight;
public byte lfItalic;
public byte lfUnderline;
public byte lfStrikeOut;
public byte lfCharSet;
public byte lfOutPrecision;
public byte lfClipPrecision;
public byte lfQuality;
public byte lfPitchAndFamily;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string lfFaceName;
}
static bool IsMonospaced(Graphics g, Font f)
{
float w1, w2;
w1 = g.MeasureString("i", f).Width;
w2 = g.MeasureString("W", f).Width;
return w1 == w2;
}
static bool IsSymbolFont(Font font)
{
const byte SYMBOL_FONT = 2;
LOGFONT logicalFont = new LOGFONT();
font.ToLogFont(logicalFont);
return logicalFont.lfCharSet == SYMBOL_FONT;
}
/// <summary>
/// Tells us, if a font is suitable for displaying document.
/// </summary>
/// <remarks>Some symbol fonts do not identify themselves as such.</remarks>
/// <param name="fontName"></param>
/// <returns></returns>
static bool IsSuitableFont(string fontName)
{
return !fontName.StartsWith("ESRI") && !fontName.StartsWith("Oc_");
}
public static List<string> GetMonospacedFontNames()
{
List<string> fontList = new List<string>();
InstalledFontCollection ifc;
ifc = new InstalledFontCollection();
using (Bitmap bmp = new Bitmap(1, 1)) {
using (Graphics g = Graphics.FromImage(bmp)) {
foreach (FontFamily ff in ifc.Families) {
if (ff.IsStyleAvailable(FontStyle.Regular) && ff.IsStyleAvailable(FontStyle.Bold)
&& ff.IsStyleAvailable(FontStyle.Italic) && IsSuitableFont( ff.Name)) {
using (Font f = new Font(ff, 10)) {
if (IsMonospaced(g,f) && !IsSymbolFont(f)) {
fontList.Add(ff.Name);
}
}
}
}
}
}
return fontList;
}
}
}
答案 3 :(得分:0)
尝试使用等宽或固定宽度的字体。