我假设它是 Windows 窗体应用程序。
下面是一个示例应用程序,其 DataGrid 包含 2 列,其中一列的值右对齐。这里的基本线是
Alignment = HorizontalAlignment.Right
应用程序(复制/粘贴并运行它以查看结果):
using System.Data;
using System.Drawing;
using System.Windows.Forms;
public class Form1 : System.Windows.Forms.Form
{
public static void Main()
{
Application.Run(new Form1());
}
public Form1()
{
var myDataGrid = new DataGrid();
ClientSize = new System.Drawing.Size(450, 330);
myDataGrid.Location = new Point(24, 50);
myDataGrid.Size = new Size(300, 200);
Controls.Add(myDataGrid);
myDataGrid.SetDataBinding(MakeDataSet(), "MyTable");
var tableStyle = new DataGridTableStyle { MappingName = "MyTable" };
var nameColumnStyle = new DataGridTextBoxColumn { MappingName = "Name" };
var sumColumnStyle = new DataGridTextBoxColumn
{
MappingName = "Sum",
Width = 170,
Alignment = HorizontalAlignment.Right
};
tableStyle.GridColumnStyles.Add(nameColumnStyle);
tableStyle.GridColumnStyles.Add(sumColumnStyle);
myDataGrid.TableStyles.Add(tableStyle);
}
private DataSet MakeDataSet()
{
var dataSet = new DataSet("myDataSet");
var table = new DataTable("MyTable");
var nameCol = new DataColumn("Name");
var sumCol = new DataColumn("Sum", typeof(float));
table.Columns.Add(nameCol);
table.Columns.Add(sumCol);
dataSet.Tables.Add(table);
var row1 = table.NewRow();
row1["Name"] = "Bank";
row1["Sum"] = 1.25;
table.Rows.Add(row1);
var row2 = table.NewRow();
row2["Name"] = "Hosting";
row2["Sum"] = 12.5;
table.Rows.Add(row2);
return dataSet;
}
}
更新
这是您需要的自定义对齐的示例,它是一个控制台应用程序,但相同的代码将在 Windows 窗体应用程序中工作:
class Program
{
static void Main(string[] args)
{
var numbers = new[] { 1, 100.12, 50.218, 0.5 };
int length = 10;
var separator = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
foreach (var n in numbers.Select(i => i.ToString()))
{
var offset = n.Contains(separator) ? n.Length - n.IndexOf(separator) : 0;
string format = string.Format("{{0, {0}}}", length + offset);
Console.WriteLine(string.Format(format, n));
}
}
}
根据您的需要调整变量 length。