在C#中更改ContextMenu字体大小

时间:2020-03-06 14:23:20  来源:igfitidea点击:

是否可以使用.NET Framework 3.5和C for桌面应用程序更改ContextMenu中使用的字体大小?看来这是系统范围的设置,但是我只想在我的应用程序中进行更改。

解决方案

我们可以更改System.Windows.Forms.ContextMenuStrip的字体大小。

如果我们需要更改文本框上默认的"剪切/复制/粘贴"上下文菜单的字体大小,我想我们需要将ContextMenu属性设置为替代默认菜单的自定义菜单。

如果要通过Windows窗体中的" ContextMenuStrip"定义自己的上下文菜单,请使用Font属性。

如果要通过WPF中的" ContextMenu"定义自己的上下文菜单,请使用各种Fontxxx属性,例如FontFamily和FontSize。

我们不能更改控件随附的默认上下文菜单;这些取决于系统设置。因此,如果我们想要"复制/剪切/粘贴/等"。带有WinForms TextBox自定义字体大小的菜单,我们必须创建一个具有适当字体大小的ContextMenuStrip并将其分配给TextBox的ContextMenuStrip属性。

我们提到了.NET 3.5,我们是用WPF编写的吗?如果是这样,则可以为TextBlock.FontSize添加属性指定字体大小。

<Whatever.ContextMenu TextBlock.FontSize="12">
  <MenuItem ... /> <!-- Will get the font size from parent -->
</Whatever.ContextMenu>

或者,我们可以使用影响所有菜单项的样式来指定它

<Style TargetType="MenuItem">
   <Setter Property="TextBlock.FontSize" Value="12" />
</Style>

当然,最好由系统设置确定字体大小。有些人可能已经对其进行了更改,以更好地适应他们的身体状况(例如视力不好)或者硬件(大/小屏幕)。对我们来说,无论我们强加什么代码,对于某些人来说都是错误的选择,而我们却没有给他们任何改变的方法。

在WPF中:

<Window.ContextMenu FontSize="36">
    <!-- ... -->
</Window.ContextMenu

在WinForms中:

contextMenuStrip1.Font = new System.Drawing.Font("Segoe UI", 24F);