Tag: 自定义控件

将自定义控件添加到DataGridViewCell

我创建了一个inheritance自Windows.System.Forms.Controls的自定义控件。 这是我控制的代码: public partial class MonthEventComponent : Control { private Color couleur; private Label labelEvenement; public MonthEventComponent(Color couleur_c, String labelEvenement_c ) { InitializeComponent(); this.couleur = couleur_c; this.labelEvenement.Text = labelEvenement_c; this.labelEvenement.ForeColor = couleur; this.labelEvenement.BackColor = Color.White; this.labelEvenement.TextAlign = ContentAlignment.MiddleLeft; this.labelEvenement.Dock = DockStyle.Fill; this.Controls.Add(labelEvenement); } public MonthEventComponent() { InitializeComponent(); this.couleur = Color.Black; this.labelEvenement = new Label(); this.labelEvenement.ForeColor […]

如何将自定义Windows窗体控件添加到Visual Studio工具箱中

我想将自定义控件添加到VS工具箱中。 但是,当新项目打开时,我总是需要它出现在工具箱中。 我怎样才能做到这一点?

WPF中的自定义形状按钮

我需要创建一个按钮,它采用图片中显示的形状: 谁能帮帮我吗? 提前致谢!

显示自定义控件的自定义图标?

在visual studio中创建自定义控件时,您可以获得此选项 丑陋的小紫色齿轮用于控制图标而不是自定义控件 。 那么如何更改我的控件图标呢?

如何定制像这样的按钮控制?

我想像这样制作一个自定义按钮控件(图像按钮没问题)。 我是新用户,因此我无法在此处发布图片。 所以我在这里上传了这张照片 在尝试了一些教程后,我现在有点绝望了 任何建议都非常感谢。 谢谢

自定义自动resize的WPF Panel类

我正在尝试通过覆盖MeasureOverride和ArrangeOverride为WPF编写自定义Panel类,但是,虽然它主要工作,但我遇到了一个我无法解释的奇怪问题。 特别是,在确定了他们的尺寸应该是什么之后,我在ArrangeOverride调用我的子项目时,它们的大小不是我给它们的大小,并且看起来是在尺寸上调整到尺寸传递到MeasureOverride的Measure方法。 我错过了这个系统应该如何工作的东西吗? 我的理解是,调用Measure只会让孩子根据提供的availableSize评估其DesiredSize ,并且不应该影响它的实际最终大小。 这是我的完整代码(面板,顺便说一句,旨在以最节省空间的方式安排孩子,为不需要它的行提供更少的空间,并在其余部分之间平均分配剩余空间 – 它目前仅支持垂直方向,但我打算一旦我正常工作就加水平): 编辑:感谢您的回复。 我马上就会仔细研究它们。 但是,让我澄清我的预期算法是如何工作的,因为我没有解释。 首先,想到我正在做的最好的方法是想象一个Grid,每行设置为*。 这样可以均匀地划分空间。 但是,在某些情况下,行中的元素可能不需要所有空间; 如果是这种情况,我想占用任何剩余空间并将其分配给可以使用该空间的那些行。 如果没有行需要任何额外的空间,我只是尝试均匀地extraSpace事物(这就是extraSpace正在做的事情,它只适用于那种情况)。 我这两次通过。 第一遍的最终点是确定行的最终“正常大小” – 即将缩小的行的大小(给定小于其所需大小的大小)。 我这样做是通过将最小项目逐步调整到最大值并在每一步调整计算出的正常大小,方法是将每个小项目的剩余空间添加到每个后续较大项目,直到没有更多项目“适合”然后中断。 在下一个过程中,我使用此正常值来确定项目是否适合,只需将正常大小的Min与项目所需的大小相对应即可。 (为简单起见,我还将匿名方法更改为lambda函数。) 编辑2:我的算法似乎在确定孩子的正确大小方面非常有用。 然而,孩子们只是不接受他们给定的尺寸。 我通过传递PositiveInfinity并返回Size(0,0)来尝试Goblin建议的MeasureOverride ,但是这会让孩子们自己绘制,好像根本没有空间限制。 对此不明显的部分是由于调用Measure发生的事情。 微软关于这个主题的文档并不清楚,因为我已多次阅读每个类和属性描述。 但是,现在很清楚调用Measure实际上会影响孩子的渲染,因此我将尝试将这些逻辑分解为BladeWise建议的两个函数。 解决了!! 我搞定了。 正如我所怀疑的,我需要对每个孩子调用两次Measure()(一次评估DesiredSize,另一次评估每个孩子的正确身高)。 我似乎很奇怪,WPF中的布局会以如此奇怪的方式设计,它会分成两个通道,但是测量通道实际上做了两件事:测量和大小的子项和编程通道几乎没有任何实际的物理定位孩子们。 非常离奇。 我将在底部发布工作代码。 首先,原始(破碎)代码: protected override Size MeasureOverride( Size availableSize ) { foreach ( UIElement child in Children ) child.Measure( availableSize ); […]

WPF用户控件与自定义控件

我正在尝试创建一个带有每行复选框的combobox,以允许多次选择。 作为用户控件或自定义控件,这会更好吗? 我之前没有创建过一个控件,只是想找一些关于我需要走向的方向的建议。 谢谢。

数据绑定不适用于具有依赖项属性的用户控件的自定义属性(输出窗口是干净的)

注意:我没有像UserOverflow上的其他类似文章那样使用User Control中的控件有问题,我正在使用User Control本身的属性。 我正在基于Canvas进行自定义控件,具有依赖属性(使用propdb模板): public sealed partial class PresentationViewer : Canvas { #region Properties public ISlide PresentationSlide { get { Debug.WriteLine(“Get PresentationSlide”); return (ISlide)GetValue(PresentationSlideProperty); } set { Debug.WriteLine(“Set PresentationSlide”); SetValue(PresentationSlideProperty, value); this.ShowSlideContent(); } } // Using a DependencyProperty as the backing store for PresentationSlide. This enables animation, styling, binding, etc… public static readonly DependencyProperty PresentationSlideProperty […]

在WPF中将Shape转换为可重用的几何体

我试图将System.Windows.Shapes.Shape对象转换为System.Windows.Media.Geometry对象。 使用Geometry对象,我将使用自定义图形控件多次渲染它,具体取决于一组数据点。 这要求Geometry对象的每个实例都有一个唯一的TranslateTransform对象。 现在,我正以两种不同的方式处理这个问题,但似乎都没有正常工作。 我的自定义控件使用以下代码来绘制几何: //Create an instance of the geometry the shape uses. Geometry geo = DataPointShape.RenderedGeometry.Clone(); //Apply transformation. TranslateTransform translation = new TranslateTransform(dataPoint.X, dataPoint.Y); geo.Transform = translation; //Create pen and draw geometry. Pen shapePen = new Pen(DataPointShape.Stroke, DataPointShape.StrokeThickness); dc.DrawGeometry(DataPointShape.Fill, shapePen, geo); 我还尝试了以下替代代码: //Create an instance of the geometry the shape uses. Geometry geo […]

将焦点设置为.NET UserControl ……?

我正在创建一个从UserControl派生的自定义控件,我想将焦点设置为。 自定义控件包含一个ComboBox控件,我在它旁边绘制一些字符串。 ComboBox可以获得焦点,但我希望能够将焦点设置为UserControl本身。 如果它具有焦点,我的OnPaint处理程序设置为稍微不同地绘制控件,但是当我创建自定义控件时它从父窗体调用CanFocus()并返回false。 是否有财产或其他东西?