예를 들어 Form1
페인트 이벤트가 있습니다.
private void Form1_Paint(object sender, PaintEventArgs e)
{
TextDrawer draw = new TextDrawer(e.Graphics,this,8.25);
}
새 클래스 TextDrawer
에서이 경우 form1 컨트롤 이름을 입력해야하므로 다음을 입력합니다.
이것은 새로운 클래스입니다 :
class TextDrawer
{
private readonly Graphics g;
private readonly Control c ;
private readonly double font_size;
public TextDrawer(Graphics g,Control c,
double font_size)
{
this.g = g;
this.c = c;
this.font_size = font_size;
}
public void DrawText(string text,Color pen_color,Color brushes_color, Point point1, Point point2, Point point3)
{
c.Font = new Font(c.Font.FontFamily.Name, (float)font_size);
SolidBrush brush = new SolidBrush(brushes_color);
using (Pen pen = new Pen(pen_color, 10f))
{
Point pt1 = point1;
Point pt2 = point2;
g.DrawLine(pen, point1, point2);
}
g.DrawString(text,
c.Font, brush, point3);
}
}
예를 들어 클래스에 대한 새 인스턴스를 만들면 컨트롤의 페인트 이벤트 내부에 입력하면 form1 pictureBox1 레이블이 페인트 이벤트가있는 컨트롤을 어떻게 든 만들고 싶습니다.
TextDrawer draw = new TextDrawer(e.Graphics,8.25);
그리고 새 클래스는 컨트롤 이름을 자동으로 감지 / 찾아 사용자가 입력 할 필요가 없습니다 : this 또는 pictureBox1 또는 label1 ...
그것을 할 방법이 있습니까?
예를 들어 TextChanged
TextBox 이벤트에서 sender
인수를 Control로 전달할 수 있습니다 .
private void YourTextBoxOne_TextChanged(object sender, EventArgs e)
{
TextBoxTextChanged((TextBox)sender);
}
private void YourTextBoxTwo_TextChanged(object sender, EventArgs e)
{
TextBoxTextChanged((TextBox)sender);
}
private void TextBoxTextChanged(TextBox tb)
{
var draw = new TextDrawer(tb, 8.25);
//Do something
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다