Tag: 自定义控件

如何绘制三点角度的弧线?

我正在创建一个可以绘制角度的控件。 我有三个依赖对象。 半径:线的长度 StartAngle:我应该从什么程度开始 角度 这是关于当前绘制的程序的截图(红线是我想要绘制的)。 所以我还没有完成的是电弧。 我需要一些帮助来绘制它。 这就是我所拥有的。 public class AngleControl2 : Control { static AngleControl2() { DefaultStyleKeyProperty.OverrideMetadata(typeof(AngleControl2), new FrameworkPropertyMetadata(typeof(AngleControl2))); } public double Angle { get { return (double)base.GetValue(AngleProperty); } set { base.SetValue(AngleProperty, value); } } public static readonly DependencyProperty AngleProperty = DependencyProperty.Register(“Angle”, typeof(double), typeof(AngleControl2), new PropertyMetadata(90.0, new PropertyChangedCallback(AngleChanged))); public double StartAngle { get […]

创建半透明面板/控件。 有一种万无一失的方式吗?

我正在尝试创建一个从System.Windows.Forms.Panel派生的半透明控件。 [编辑:基本上我想要实现的是这个]: 我已经浏览了大量的网络文章和SO问题,并提出了这个问题: class SeeThroughPanel : Panel { public SeeThroughPanel() { } protected override CreateParams CreateParams { get { var cp = base.CreateParams; cp.ExStyle |= 0x00000020; return cp; } } protected override void OnPaint(PaintEventArgs e) { //base.OnPaint(e); e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(50, 0, 0, 0)), this.ClientRectangle); } } 结果如此(请注意,此代码也不会使其真正半透明。按钮显示为全彩色,与上图不同): 但是,只要我做了一些导致重新绘制半透明面板边界内任何其他控件的东西,它就会被透支(在这种情况下,我已经滚动了底层控件): 所以我的问题是,我该如何避免这种情况? 必须有某种方式。 毕竟,Web浏览器始终处理这种渲染。

将UserControl转换为自定义控件

下面的UserControl运行良好,但我想更容易更改样式。 我尝试过的一件事是将其转换为自定义控件,但我仍然坚持基础知识如何在处理属性更改的静态方法中设置ToolTip(参见下文) 另一件事我试图将Style转换为ResourceDictionary中的通用按钮样式,但这是这个问题的主题 如何在我的子类Button中设置ToolTip? 干杯 UserControl XAML: _Add New Subject UserControl代码背后: public partial class AddNewItemButton : UserControl { public AddNewItemButton() { InitializeComponent(); } public static readonly DependencyProperty SubjectProperty = DependencyProperty.Register( “Subject”, typeof (string), typeof (AddNewItemButton), new FrameworkPropertyMetadata(OnSubjectChanged)); public string Subject { get { return (string) GetValue(SubjectProperty); } set { SetValue(SubjectProperty, value); } } private static […]

如何自动在自定义控件内创建绑定?

我有自定义工具栏控件与DependencyProperty IsBusy 这是我如何使用它: 按照惯例,我的所有VM都inheritance自基本VM并具有IsBusy属性。 所以,我知道这个属性将始终在VM上可用。 现在我还有另外4个属性。 我想知道如何在控件的代码中自动绑定到这个IsBusy而不是在XAML中绑定XAML,而不是将它们添加到XAML中。 编辑 实际上,我找到了我的问题的答案: Silverlight:以编程方式绑定控件属性 现在,我的问题是: 在这样的构造函数中应用此绑定是否正确? public myToolbar() { this.DefaultStyleKey = typeof(myToolbar); var binding = new Binding(“IsBusy”) { Mode = BindingMode.TwoWay }; this.SetBinding(IsBusyProperty, binding); } 我应该检查此属性是否存在XAML绑定(另一个绑定)而不绑定? 无论哪种方式都有效,但我想知道它是否对性能,气味等有害? 怎么样在onApplyTemplate这样做。 这是更好的方式吗? if (GetBindingExpression(IsBusyProperty) == null) { var binding = new Binding(“IsBusy”) { Mode = BindingMode.TwoWay }; this.SetBinding(IsBusyProperty, binding); }

asp.net在网站中添加自定义控件

我想在我的网站上制作一个自定义控件(注意:不是Web应用程序) 以下是代码 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.ComponentModel; using System.Web.UI; using System.Web.UI.WebControls; namespace AnkitControls { /// /// Summary description for CustomTreeView /// public class CustomTreeViewControl : WebControl { } } Default.aspx: Welcome to ASP.NET! To learn more about ASP.NET visit www.asp.net. You can also find documentation on ASP.NET at MSDN. 当我编译网站时,它给我组装错误。 […]

如何选择不同高度的WrapPanel项目(垂直)?

这就是它现在的样子: 这就是我想拥有它的方式: 如图所示,瓷砖应尽可能密集,并且它们之间只有一定的边距。 这是我的代码: 代码当然是我特定问题的示例代码 – 稍后它应该只是一个包装面板(或任何其他控件),以编程方式添加项目(这是自定义控件)(如“WrapPanel1.Children.Add(r)” ;“)。 我希望这些图片不言自明。

如何在自定义.NET Web控件中指定必需属性?

private string _itemId; [Browsable(true), Description(“Required identifier for the Item.”)] public string ItemId { get { return _itemId; } set { if (string.IsNullOrEmpty(_itemId)) { _itemId = value; } } } 当有人使用控件时,我怎么能真正做到这一点? 我正在尝试找到一个类似于必需(true)的属性。

在C#中以自定义forms设置ClientRectangle

在C#中,我有自定义forms的无边框样式,它覆盖onPaint事件并使用透明度键绘制自定义背景。 我想设置自己的客户端矩形值(因此内容将放在我的自定义边框内),但不幸的是Form的ClientRectangle属性是只读的。 我发现net的建议覆盖了WndProc方法(它设置了客户端大小),但很遗憾,我发现这方面的信息很少。 特别是它需要填充lParam和wParam指向的数据,我真的不知道如何在C#中执行此操作。 有帮助吗?

将事件从自定义控件传播到表单

我有一个自定义控件,如: public sealed class BorderEx : Control { public static readonly RoutedEvent ReloadClickEvent = EventManager.RegisterRoutedEvent(“ReloadClick”, RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(BorderEx)); public event RoutedEventHandler ReloadClick { add { AddHandler(ReloadClickEvent, value); } remove { RemoveHandler(ReloadClickEvent, value); } } void RaiseReloadClickEvent() { var newEventArgs = new RoutedEventArgs(ReloadClickEvent); RaiseEvent(newEventArgs); } static BorderEx() { DefaultStyleKeyProperty.OverrideMetadata(typeof(BorderEx), new FrameworkPropertyMetadata(typeof(BorderEx))); } } 并且在reloadButton上发生了事件,点击generic.xaml </ControlTemplate 但我不知道如何从内部按钮引发此外部事件。 […]

DLL中没有可以放在工具箱上的组件

我有一个DatePicker自定义控件,我试图添加到工具箱。 该文件的名称是BasicFrame.WebControls.BasicDatePicker.dll ,我在“工具箱”>“选择项目”中右键单击,然后在.NET Framework组件下浏览到该文件后选择该文件。 但是我收到此错误消息: 其中没有任何组件可以放在工具箱上 为什么我会收到此消息,如何解决?