我想将命令链接添加到适用于Windows 10 21H2的C# .NET核心Windows窗体应用程序中,但我没有找到任何在线教程。我相信这是一张命令链接的照片,但我不太确定。有人能告诉我如何将这些添加到我的应用程序中吗?
我在VS工具箱中找不到这样的控件。
fykwrbwg1#
尝试使用此自定义控件,该控件派生自Button,其中BS_COMMANDLINK样式添加到CreateParams属性重写中。这将在CommandLink按钮中转换标准按钮控件。控件的Text属性值显示在箭头的右侧,而自定义LinkNote属性提供的说明显示在文本的正下方,字体较小。设置LinkNote值时,BCM_SETNOTE消息将发送到本机Button。这将在设计时或运行时设置关联的Note。自定义ControlDesigner用于移除设置此样式时不需要/不使用的属性,或无法更改的属性,如FlatStyle(需要设置为FlatStyle.System)。遗憾的是,此设计器只能在.NET Framework中工作,要使其在.NET 5+中工作,您需要安装Microsoft.WinForms.Designer.SDK包。打开包管理器控制台并粘贴:
Text
LinkNote
FlatStyle
FlatStyle.System
NuGet\Install-Package Microsoft.WinForms.Designer.SDK -Version 1.1.0-prerelease-preview3.22076.5
否则很难找到这个包裹。如果您不关心设计器的功能,则将其删除即可
using System.Collections; using System.ComponentModel; using System.Runtime.InteropServices; #if NET5_0_OR_GREATER using Microsoft.DotNet.DesignTools.Designers; #else using System.Windows.Forms.Design; #endif [ToolboxItem(true)] [Designer(typeof(CommandLinkDesigner))] public class CommandLink : Button { private const int BCM_SETNOTE = 0x1609; private string m_LinkNote = string.Empty; public CommandLink() { SetStyle(ControlStyles.ResizeRedraw | ControlStyles.UseTextForAccessibility, true); FlatStyle = FlatStyle.System; } [DefaultValue(FlatStyle.System)] public new FlatStyle FlatStyle { get { return base.FlatStyle; } set { base.FlatStyle = FlatStyle.System; } } public string LinkNote { get => m_LinkNote; set { if (value != m_LinkNote) { m_LinkNote = value; SendMessage(this.Handle, BCM_SETNOTE, 0, m_LinkNote); } } } protected override CreateParams CreateParams { get { var cp = base.CreateParams; cp.Style |= (0 | 0x0E); // Set BS_COMMANDLINK return cp; } } [DllImport("user32.dll", CharSet = CharSet.Unicode)] private static extern bool SendMessage(IntPtr hWnd, int msg, int wParam, string lParam); public class CommandLinkDesigner : ControlDesigner { private readonly string[] RemovedProperties = new[] { "AllowDrop", "AutoEllipsis", "AutoSize", "AutoSizeMode", "BackColor", "BackgroundImage", "BackgroundImageLayout", "Cursor", "FlatAppearance", "FlatStyle", "ForeColor", "Image", "ImageAlign", "ImageImdex", "ImageKey", "ImageList", "TextAlign", "TextImageRelation" }; public CommandLinkDesigner() { } protected override void PreFilterProperties(IDictionary properties) { foreach (string prop in RemovedProperties) { properties.Remove(prop); } base.PreFilterProperties(properties); } } }
1条答案
按热度按时间fykwrbwg1#
尝试使用此自定义控件,该控件派生自Button,其中BS_COMMANDLINK样式添加到CreateParams属性重写中。
这将在CommandLink按钮中转换标准按钮控件。
控件的
Text
属性值显示在箭头的右侧,而自定义LinkNote
属性提供的说明显示在文本的正下方,字体较小。设置
LinkNote
值时,BCM_SETNOTE消息将发送到本机Button。这将在设计时或运行时设置关联的Note。自定义ControlDesigner用于移除设置此样式时不需要/不使用的属性,或无法更改的属性,如
FlatStyle
(需要设置为FlatStyle.System
)。遗憾的是,此设计器只能在.NET Framework中工作,要使其在.NET 5+中工作,您需要安装Microsoft.WinForms.Designer.SDK包。打开包管理器控制台并粘贴:
否则很难找到这个包裹。
如果您不关心设计器的功能,则将其删除即可