using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Text;
using System.Windows.Forms;namespace GradientTabControl
{
public partial class TXButton :Button
{
System.Drawing.Color StartColor;
System.Drawing.Color EndColor;
private PointF centerPoint; private Color BtnFrontColor; public TXButton()
{
StartColor = Color.FromArgb(166, 202, 240);
EndColor = Color.FromArgb(168, 226, 250);
BtnFrontColor = Color.Black;
}
protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);
StringFormat sf = new StringFormat();
sf.LineAlignment = StringAlignment.Center ;
sf.Alignment = StringAlignment.Center;
sf.FormatFlags = StringFormatFlags.DirectionRightToLeft;
Graphics g = pe.Graphics;
System.Drawing.Drawing2D.LinearGradientBrush gradBrush;
gradBrush = new System.Drawing.Drawing2D.LinearGradientBrush(this.ClientRectangle, PageStartColor, PageEndColor, LinearGradientMode.ForwardDiagonal);
g.FillRectangle(gradBrush, 2, 2, base.Width - 4, base.Height - 4); Brush TxBrush = new SolidBrush(this.BtnFrontColor); //this.centerPoint = new PointF((this.ClientRectangle.Left + this.ClientRectangle.Right) / 2, (this.ClientRectangle.Top + this.ClientRectangle.Bottom) / 2);
this.centerPoint = new PointF(( base.Width ) / 2, ( base.Height) / 2); g.DrawString(this.Text, new Font("Times New Roman", 12), TxBrush, centerPoint.X, centerPoint.Y - 12, sf); gradBrush.Dispose();
TxBrush.Dispose();
}
#region Gradient start and end color properties
public System.Drawing.Color PageStartColor
{
get
{
return StartColor;
}
set
{
StartColor = value;
}
}
public System.Drawing.Color PageEndColor
{
get
{
return EndColor;
}
set
{
EndColor = value;
}
}
#endregion #region fore color front normal text
public Color TextColor
{
get
{
return this.BtnFrontColor;
}
set
{
this.BtnFrontColor = value;
}
}
#endregion #region set the text aglin attribute
public override ContentAlignment TextAlign
{
get
{
return base.TextAlign;
}
set
{
base.TextAlign = value;
}
} #endregion private void InitializeComponent()
{
this.SuspendLayout();
//
// TXButton
//
this.Resize += new System.EventHandler(this.TXButton_Resize);
this.ResumeLayout(false); } private void TXButton_Resize(object sender, EventArgs e)
{
OnPaint((PaintEventArgs)e);
}
}
}我写了一个组件,内容如下,为什幺通过该组件建立的第一个按钮名字为txButton2而不是txButton1呢?请问哪里写得有问题?谢谢!
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Text;
using System.Windows.Forms;namespace GradientTabControl
{
public partial class TXButton :Button
{
System.Drawing.Color StartColor;
System.Drawing.Color EndColor;
private PointF centerPoint; private Color BtnFrontColor; public TXButton()
{
StartColor = Color.FromArgb(166, 202, 240);
EndColor = Color.FromArgb(168, 226, 250);
BtnFrontColor = Color.Black;
}
protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);
StringFormat sf = new StringFormat();
sf.LineAlignment = StringAlignment.Center ;
sf.Alignment = StringAlignment.Center;
sf.FormatFlags = StringFormatFlags.DirectionRightToLeft;
Graphics g = pe.Graphics;
System.Drawing.Drawing2D.LinearGradientBrush gradBrush;
gradBrush = new System.Drawing.Drawing2D.LinearGradientBrush(this.ClientRectangle, PageStartColor, PageEndColor, LinearGradientMode.ForwardDiagonal);
g.FillRectangle(gradBrush, 2, 2, base.Width - 4, base.Height - 4); Brush TxBrush = new SolidBrush(this.BtnFrontColor); //this.centerPoint = new PointF((this.ClientRectangle.Left + this.ClientRectangle.Right) / 2, (this.ClientRectangle.Top + this.ClientRectangle.Bottom) / 2);
this.centerPoint = new PointF(( base.Width ) / 2, ( base.Height) / 2); g.DrawString(this.Text, new Font("Times New Roman", 12), TxBrush, centerPoint.X, centerPoint.Y - 12, sf); gradBrush.Dispose();
TxBrush.Dispose();
}
#region Gradient start and end color properties
public System.Drawing.Color PageStartColor
{
get
{
return StartColor;
}
set
{
StartColor = value;
}
}
public System.Drawing.Color PageEndColor
{
get
{
return EndColor;
}
set
{
EndColor = value;
}
}
#endregion #region fore color front normal text
public Color TextColor
{
get
{
return this.BtnFrontColor;
}
set
{
this.BtnFrontColor = value;
}
}
#endregion #region set the text aglin attribute
public override ContentAlignment TextAlign
{
get
{
return base.TextAlign;
}
set
{
base.TextAlign = value;
}
} #endregion private void InitializeComponent()
{
this.SuspendLayout();
//
// TXButton
//
this.Resize += new System.EventHandler(this.TXButton_Resize);
this.ResumeLayout(false); } private void TXButton_Resize(object sender, EventArgs e)
{
OnPaint((PaintEventArgs)e);
}
}
}我写了一个组件,内容如下,为什幺通过该组件建立的第一个按钮名字为txButton2而不是txButton1呢?请问哪里写得有问题?谢谢!
因为建立的新组件的命名一般从1开始的,那我上述的代码怎样可以避免这个问题呢?thanks!