我正在嘗試編寫一些可以填充字符串列表的東西,因此每個字符串的大小都相同用空格填充非常簡單,您只需獲得最大長度并用空格填充直到它們相等但是我的問題是字體不等寬。例如,如果我們有aa萬維網我們會用一個空格填充 aa 并得到aa萬維網因為這些字體不等寬,所以它們不起作用。我編寫了一個腳本,試圖計算有問題的字符串的物理大小并用空格填充直到大小相等。StreamReader sr = new StreamReader(@"C:\Users\ben.bodie\Desktop\FontPaddingTest.txt"); var lines = sr.ReadToEnd().Split(new string[] { Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries).ToList(); sr.Close(); sr.Dispose(); var max = 0; var spacesize = TextRenderer.MeasureText(" ", new Font("Microsoft Sans Serif", 7.8f)); foreach (var line in lines) { var size = TextRenderer.MeasureText(line, new Font("Microsoft Sans Serif", 7.8f)); max = Math.Max(max, size.Width); } foreach(var line in lines) { var newline = line; var size = TextRenderer.MeasureText(newline, new Font("Microsoft Sans Serif", 7.8f)); var width = size.Width; int spacestoadd = 0; while(max-10 > width) { newline = " " + newline; width = width + spacesize.Width; spacestoadd++; } dataGridView1.Rows.Add(newline, spacestoadd); }但是,正如您所看到的,這不起作用任何想法,將不勝感激
2 回答

慕標琳琳
TA貢獻1830條經驗 獲得超9個贊
我已經對此進行了一些修補,并認為我已經修復了它
我沒有添加空間的大小,而是在添加空格的循環(huán)的每次迭代中重新計算大小
var newline = line;
var size = TextRenderer.MeasureText(newline, new Font("Microsoft Sans Serif", 7.8f));
var width = size.Width;
int spacestoadd = 0;
while(max-10 > width)
{
newline = " " + newline;
size = TextRenderer.MeasureText(newline, new Font("Microsoft Sans Serif", 7.8f));
width = size.Width;
spacestoadd++;
}
dataGridView1.Rows.Add(newline, spacestoadd);
- 2 回答
- 0 關注
- 291 瀏覽
添加回答
舉報
0/150
提交
取消