如何使用 Visual Studio 中的设计器(不是 code-behind)在 WinForms 的 DataGridView 中为列 header 创建 multi-line 工具提示
How to create multi-line tooltips for a column header in a DataGridView in WinForms using the designer in Visual Studio (NOT code-behind)
我有一个带有 DataGridView 和几个列的 Form1:
我正在尝试将 multi-line tool-tip 添加到 Column1 header 这样当您将鼠标悬停在“Column 1 " 文本,则显示 tool-tip。我可以将 tool-tip 添加到 header,方法是打开 dataGridView 的 属性 页面中的 (Collections) 项,选择 Column1,然后在 ToolTipText 字段中添加文本,如下所示:
问题是我的工具提示很长(见图),我希望它在一定数量的字符后换行,但无论我怎样尝试,我都无法在 ToolTipText 中插入换行符 属性 在第二张图片中。它始终只是一长串连续的文本。
我的表格同时使用英语和法语,因此我使用的是资源文件 (.resx)。我不想进入并手动编辑表单的 self-gerenated .resx 文件,因为我过去有过手动编辑由 Visual Studio 生成的 .resx 文件的糟糕经历。我无法为列的工具提示添加换行符,这似乎很奇怪,但我可以通过按 Enter 键将 multi-line 工具提示添加到实际的 DataGridView(这在列的情况下不起作用):
我能想到的唯一解决方法是在项目的“属性”部分创建项目级 .resx 文件,然后手动将长工具提示添加到这些文件中。然后,当表单在运行时加载时,我会明确地将项目级资源文件中适当的 tool-tip 文本分配给列 header。像这样:dataGridView1.Column1.ToolTipText = Properties.MyToolTipStrings.ReallyLongToolTip
它应该可以与项目级别的 resx 文件一起使用,但它确实很笨重,我认为必须有更好的方法。有什么建议吗?
您可以使用以下代码为列 header 创建 multi-line 工具提示。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
foreach (DataGridViewColumn column in dataGridView1.Columns)
{
column.ToolTipText = Example.SpliceText(column.ToolTipText, 13);
}
}
}
public static class Example
{
public static string SpliceText(string text, int lineLength)
{
return Regex.Replace(text, "(.{" + lineLength + "})", "" + Environment.NewLine);
}
}
我有一个带有 DataGridView 和几个列的 Form1:
我正在尝试将 multi-line tool-tip 添加到 Column1 header 这样当您将鼠标悬停在“Column 1 " 文本,则显示 tool-tip。我可以将 tool-tip 添加到 header,方法是打开 dataGridView 的 属性 页面中的 (Collections) 项,选择 Column1,然后在 ToolTipText 字段中添加文本,如下所示:
问题是我的工具提示很长(见图),我希望它在一定数量的字符后换行,但无论我怎样尝试,我都无法在 ToolTipText 中插入换行符 属性 在第二张图片中。它始终只是一长串连续的文本。
我的表格同时使用英语和法语,因此我使用的是资源文件 (.resx)。我不想进入并手动编辑表单的 self-gerenated .resx 文件,因为我过去有过手动编辑由 Visual Studio 生成的 .resx 文件的糟糕经历。我无法为列的工具提示添加换行符,这似乎很奇怪,但我可以通过按 Enter 键将 multi-line 工具提示添加到实际的 DataGridView(这在列的情况下不起作用):
我能想到的唯一解决方法是在项目的“属性”部分创建项目级 .resx 文件,然后手动将长工具提示添加到这些文件中。然后,当表单在运行时加载时,我会明确地将项目级资源文件中适当的 tool-tip 文本分配给列 header。像这样:dataGridView1.Column1.ToolTipText = Properties.MyToolTipStrings.ReallyLongToolTip
它应该可以与项目级别的 resx 文件一起使用,但它确实很笨重,我认为必须有更好的方法。有什么建议吗?
您可以使用以下代码为列 header 创建 multi-line 工具提示。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
foreach (DataGridViewColumn column in dataGridView1.Columns)
{
column.ToolTipText = Example.SpliceText(column.ToolTipText, 13);
}
}
}
public static class Example
{
public static string SpliceText(string text, int lineLength)
{
return Regex.Replace(text, "(.{" + lineLength + "})", "" + Environment.NewLine);
}
}