gpt4 book ai didi

.net - 如何更改 ColorDialog 的标题?

转载 作者:行者123 更新时间:2023-12-01 09:11:20 24 4
gpt4 key购买 nike

我正在旋转 ColorDialog WinForms 中的组件,让用户选择特定自定义控件的图表的背景颜色和前景色。两个配置选项都在配置对话框的同一页面上,所以我想在弹出对话框时将颜色对话框的标题设置为“背景颜色”以更改图表的背景,而将“网格颜色”设置为更改颜色的网格。这将提供一个有用的用户体验,如果用户不确定是否选择更改背景或网格颜色,他们将能够查看图表的标题。

不幸的是,文档似乎没有提到任何操作 ColorDialog 的方法。的标题。是否有可能进行这种更改?如果是这样,如何?

最佳答案

不幸的是,无法更改通用颜色选择器对话框的标题。一个可能的解决方案是找到或创建一个颜色选择器控件以专用形式托管,当然,您可以分配适当的标题。或者你可以 adopt the Office style of color picking以组合框的形式。

编辑

受 Rob 回答的启发,我找到了以下解决方案。它涉及从 ColorDialog 继承,从 HookProc 中获取 HWND方法和调用 SetWindowText通过 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);
}
}

关于.net - 如何更改 ColorDialog 的标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/762009/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com