C# 如何获取上下文菜单项字体信息,如键入dize?如何更改项目的字体大小类型?
在这段代码中,我用一些项目创建上下文菜单,然后绘制最后一个项目。 我想,我画的最后一个项目,它的字体大小和类型将是相同的3个项目一样,像剪切复制粘贴 我如何知道第一个项目的字体样式和大小,以便我可以更改最后一个项目的外观C# 如何获取上下文菜单项字体信息,如键入dize?如何更改项目的字体大小类型?,c#,.net,winforms,C#,.net,Winforms,在这段代码中,我用一些项目创建上下文菜单,然后绘制最后一个项目。 我想,我画的最后一个项目,它的字体大小和类型将是相同的3个项目一样,像剪切复制粘贴 我如何知道第一个项目的字体样式和大小,以便我可以更改最后一个项目的外观 private void dataGridView1_MouseClick(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right)
private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
ContextMenu m = new ContextMenu();
m.MenuItems.Add(new MenuItem("Cut"));
m.MenuItems.Add(new MenuItem("Copy"));
m.MenuItems.Add(new MenuItem("Paste"));
int currentMouseOverRow = dataGridView1.HitTest(e.X, e.Y).RowIndex;
if (currentMouseOverRow >= 0)
{
m.MenuItems.Add(new CustomMenuItem(string.Format("Row number {0}", currentMouseOverRow)));
m.MenuItems[m.MenuItems.Count - 1].OwnerDraw = true;
m.MenuItems[m.MenuItems.Count - 1].DrawItem += Cm_DrawItem;
m.MenuItems[m.MenuItems.Count - 1].MeasureItem += MeasureMenuItem;
}
m.Show(dataGridView1, new Point(e.X, e.Y));
}
}
然后画:
void Cm_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawBackground();
var item = (MenuItem)sender;
var g = e.Graphics;
var font = new Font("Arial", 10, FontStyle.Italic);
var brush = System.Drawing.Brushes.Red;
g.DrawString(item.Text, font, brush, e.Bounds.X, e.Bounds.Y);
font.Dispose();
}
然后测量:
void MeasureMenuItem(object sender, MeasureItemEventArgs e)
{
MenuItem m = (MenuItem)sender;
Font font = new Font(Font.FontFamily, Font.Size, Font.Style);
SizeF sze = e.Graphics.MeasureString(m.Text, font);
e.ItemHeight = (int)sze.Height;
e.ItemWidth = (int)sze.Width;
}
这就是我要找的
var font = System.Drawing.SystemFonts.DefaultFont;