コロンを縦にマーシャリングしたいのですが、文字サイズによっては隙間ができてしまいます。
stringExpression1.PadRight(11)
すべてのラインに使用しています。
組み込みの方法はありmeasure
ますか、それともより見やすくするために文字の幅を変更する必要がありますか?
注: これらは文字列でなければなりません。次のようなビジュアル コンポーネントは使用できません。TextBlock
それは本当に役に立ちませんでしたが、希望はs.oneへの道を示しています
使用法
List<string> items = new List<string>() {
UIResources.Systolic,
UIResources.Diastolic,
UIResources.Pulse };
var result = GetAlined(items);
ヘルパー コード
const string EMPTYLINE=" ";
public static int GetDefaultItemWidth(string text,System.Drawing.Font font=null)
{
if (font == null)
font = System.Drawing.SystemFonts.DefaultFont;
return System.Windows.Forms.TextRenderer.MeasureText(text, font).Width;
}
public static List<string> GetAlined(List<string> inputString)
{
double max = default(double);
var spaceWidth = GetDefaultItemWidth(" ");
foreach (var item in inputString)
{
var width = GetDefaultItemWidth(item);
max = Math.Max(max, width);
}
List<string> resultItems = new List<string>(inputString.Count);
foreach (var item in inputString)
{
var width = GetDefaultItemWidth(item);
if ((max - width) > spaceWidth)
{
var spaceCount = (int)Math.Round((max - width) / spaceWidth);
string resultItem = item;
resultItem=EMPTYLINE.Take(spaceCount).ToString() + resultItem;
resultItems.Add(resultItem);
}
else
{
resultItems.Add(item);
}
}
return resultItems;
}