当前位置: 首页 > 编程语言 > C#

如何在C#中自定义控件?分享

时间:2023-04-10 19:41:48 C#

C#中如何制作自定义控件?所以我正在开发一个像IDE一样运行的C#程序。问题是,我是通过富文本框来实现的,自定义语法高亮显示效率极低。我想知道是否有一种方法可以制作类似于富文本框(甚至基于富文本框)的自定义控件,然后以更简单的方式构建语法突出显示...那么,我将如何制作自定义控件?如果你超级好,那么你就给我指明了一个很棒的教程的方向!简单但实用的示例:WindowsForms:http://www.codeproject.com/KB/miscctrl/cutebutton.aspxWPF:http://msdn.microsoft.com/en-us/library/cc295235.aspx我建议你看看在一些教程,如http://www.codeproject.com/KB/miscctrl/cutebutton.aspx正如NavidRahmani上面所说,您不必从头开始,您可以扩展现有控件或使用已经从不同库创建的控件。比如telerik控制。很容易从基本控件派生publicclassCustomRichTextBox:RichTextBox{publicCustomRichTextBox(){this.Multiline=true;this.WordWrap=false;this.AcceptsTab=true;//...}}不,在你的工具箱中没有控件试图假装是一个好的编辑器控件。TextBox和RichTextBox的设计目标截然不同。这已经解决了很多次,据我所知,ScintillaNET项目处于领先地位。我发现本教程非常有用。希望这对你有帮助。很简单,调用图形方法,绘制形状到相应的控件即可。假设您想创建一个自定义按钮,您知道该按钮在系统中是一个矩形,因此只需在C#的Paint()方法中使用这些按钮坐标(x、y、宽度、高度)和LinearGradientBrush或SolidBrush制作一个填充的矩形.C#提供了ClientRectangle方法来获取所有使用矩形控件的坐标。有许多组件使用矩形,如Button、Panel、CheckBox、TabControl等。在C#中创建自定义控件我认为这些链接也很有用。使用C#在VisualStudio中创建自定义控件(视频)使用System.Collections.Generic;使用系统。使用系统绘图;使用系统数据;使用System.Windows.Forms;使用System.Drawing.Drawing2D;命名空间Custom_Controls_in_CS{公共类ButtonZ:System.Windows.Forms.Button{颜色clr1,clr2;私人颜色color1=Color.DodgerBlue;私人颜色color2=Color.MidnightBlue;私人颜色m_hovercolor1=Color.Turquoise;私人颜色m_hovercolor2=Color.DarkSlateGray;私人诠释color1Transparent=250;私人诠释color2Transparent=250;clickcolor2=Color.Red;私人int角度=90;私人inttextX=100;私人int文本Y=25;私人字符串文本=“”;publicColorbuttonborder_1=Color.FromArgb(220,220,220);publicColorbuttonborder_2=Color.FromArgb(150,150,150);publicBooleanshowButtonText=true;p公共intborderWidth=2;publicColorborderColor=Color.Transparent;publicenumButtonsShapes{Rect,RoundRect,Circle}ButtonsShapesbuttonShape;publicButtonsShapesButtonShape{get{returnbuttonShape;}设置{buttonShape=value;无效();}}publicStringButtonText{get{返回文本;}设置{文本=值;无效();}}publicintBorderWidth{get{返回borderWidth;}设置{borderWidth=值;无效();}}voidSetBorderColor(ColorbdrColor){intred=bdrColor.R-40;int绿色=bdrColor.G-40;intblue=bdrColor.B-40;如果(红色255){color1Transparent=255;无效();否则无效();}}publicintTransparent2{get{returncolor2Transparent;}set{color2Transparent=value;如果(color2Transparent>255){color2Transparent=255;无效();否则无效();}}publicintGradientAngle{get{返回角度;}设置{角度=值;无效();}}publicintTextLocation_X{得到{重新转文字X;}设置{textX=值;无效();}}publicintTextLocation_Y{get{returntextY;}设置{textY=值;无效();}}publicBooleanShowButtontext{get{returnshowButtonText;}设置{showButtonText=值;无效();}}publicButtonZ(){this.Size=newSize(100,40);this.BackColor=Color.Transparent;this.FlatStyle=FlatStyle.Flat;this.FlatAppearance.BorderSize=0;this.FlatAppearance.MouseOverBackColor=Color.Transparent;this.FlatAppearance.MouseDownBackColor=Color.Transparent;text=this.Text;}//methodmouseenterprotectedoverridevoidOnMouseEnter(EventArgse){base.OnMouseEnter(e);clr1=颜色1;clr2=颜色2;color1=m_hovercolor1;color2=m_hovercolor2;}//methodmouseleaveprotectedoverridevoidOnMouseLeave(EventArgse){base.OnMouseLeave(e);颜色1=clr1;颜色2=clr2;设置边框颜色(边框颜色);}protectedoverridevoidOnMouseDown(MouseEventArgsmevent){base.OnMouseDown(mev耳鼻喉科);颜色1=点击颜色1;颜色2=点击颜色2;intred=borderColor.R-40;intgreen=borderColor.G-40;intblue=borderColor.B-40;if(redThanksC#Customcontrols?所有内容分享,如果对你有用,需要了解更多C#学习教程,希望大家多多关注---本文收集自网络,并非代表立场,如涉及侵权,请点击右侧联系管理员删除,如需转载请注明出处: