我正在旋转一个ColorDialogWinForms 中的组件让用户选择特定自定义控件的图表的背景色和前景色。两个配置选项都位于配置对话框的同一页面上,因此我想在弹出对话框时将颜色对话框的标题设置为“背景颜色”以更改图表的背景,并将“网格颜色”设置为更改颜色网格的。这将提供一个有用的用户体验,如果用户不确定是否选择更改背景或网格颜色,他们将能够查看图表的标题。
不幸的是,文档似乎没有提到任何操纵的方法ColorDialog
的标题。可以做出这样的改变吗?如果是这样,怎么办?
不幸的是,无法更改通用颜色选择器对话框的标题。一个可能的解决方案是找到或创建一个颜色选择器控件来托管在专用窗体中,当然,您可以分配适当的标题。或者你可以采用Office风格的选色以组合框的形式。
EDIT
受到罗布回答的启发,我找到了以下解决方案。它涉及继承自颜色对话框,从HookProc方法及调用设置窗口文本通过 P/Invoke:
public class MyColorDialog : ColorDialog
{
[DllImport("user32.dll")]
static extern bool SetWindowText(IntPtr hWnd, string lpString);
private string title = string.Empty;
private bool titleSet = false;
public string Title
{
get { return title; }
set
{
if (value != null && value != title)
{
title = value;
titleSet = false;
}
}
}
protected override IntPtr HookProc(IntPtr hWnd, int msg, IntPtr wparam, IntPtr lparam)
{
if (!titleSet)
{
SetWindowText(hWnd, title);
titleSet = true;
}
return base.HookProc(hWnd, msg, wparam, lparam);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)