papeli_83
جمعه 13 مرداد 1391, 17:18 عصر
با سلام
من دارم یه یوزر کنترل برای لیبل عمودی مینویسم
این هم کداش که اما مشکلی که دارم اینه که اتو سایز نداره
( در داخل یوزر کنترل یه کلاس به اسم VerticalLabel با کدهای زیر ایجاد می کنیم و برنامرو ران میکنیم ( هیچ لیبلی هم رو یوزر کنترل قرار نمی دیم ! ) )
از دوستان ممنون میشم با کد منو راهنمایی کنن
using System;
using System.ComponentModel;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
public class VerticalLabel : System.Windows.Forms.Control
{
private string labelText;
public VerticalLabel()
: base()
{
InitializeComponent();
}
#region " Windows Form Designer generated code "
protected override void Dispose(bool disposing)
{
if (disposing)
{
if ((components != null))
{
components.Dispose();
}
}
base.Dispose(disposing);
}
private System.ComponentModel.Container components;
private void InitializeComponent()
{
this.Size = new System.Drawing.Size(24, 100);
}
#endregion
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
{
float sngControlWidth = 0;
float sngControlHeight = 0;
float sngTransformX = 0;
float sngTransformY = 0;
Color labelColor = default(Color);
Pen labelBorderPen = new Pen(labelColor, 0);
SolidBrush labelBackColorBrush = new SolidBrush(labelColor);
SolidBrush labelForeColorBrush = new SolidBrush(this.ForeColor);
base.OnPaint(e);
sngControlWidth = this.Size.Width;
sngControlHeight = this.Size.Height;
e.Graphics.DrawRectangle(labelBorderPen, 0, 0, sngControlWidth, sngControlHeight);
e.Graphics.FillRectangle(labelBackColorBrush, 0, 0, sngControlWidth, sngControlHeight);
sngTransformX = 0;
sngTransformY = sngControlHeight;
e.Graphics.TranslateTransform(sngTransformX, sngTransformY);
e.Graphics.RotateTransform(270);
e.Graphics.DrawString(labelText, Font, labelForeColorBrush, 0, 0);
}
public override string Text
{
get { return labelText; }
set
{
labelText = value;
Invalidate();
}
}
}
من دارم یه یوزر کنترل برای لیبل عمودی مینویسم
این هم کداش که اما مشکلی که دارم اینه که اتو سایز نداره
( در داخل یوزر کنترل یه کلاس به اسم VerticalLabel با کدهای زیر ایجاد می کنیم و برنامرو ران میکنیم ( هیچ لیبلی هم رو یوزر کنترل قرار نمی دیم ! ) )
از دوستان ممنون میشم با کد منو راهنمایی کنن
using System;
using System.ComponentModel;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
public class VerticalLabel : System.Windows.Forms.Control
{
private string labelText;
public VerticalLabel()
: base()
{
InitializeComponent();
}
#region " Windows Form Designer generated code "
protected override void Dispose(bool disposing)
{
if (disposing)
{
if ((components != null))
{
components.Dispose();
}
}
base.Dispose(disposing);
}
private System.ComponentModel.Container components;
private void InitializeComponent()
{
this.Size = new System.Drawing.Size(24, 100);
}
#endregion
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
{
float sngControlWidth = 0;
float sngControlHeight = 0;
float sngTransformX = 0;
float sngTransformY = 0;
Color labelColor = default(Color);
Pen labelBorderPen = new Pen(labelColor, 0);
SolidBrush labelBackColorBrush = new SolidBrush(labelColor);
SolidBrush labelForeColorBrush = new SolidBrush(this.ForeColor);
base.OnPaint(e);
sngControlWidth = this.Size.Width;
sngControlHeight = this.Size.Height;
e.Graphics.DrawRectangle(labelBorderPen, 0, 0, sngControlWidth, sngControlHeight);
e.Graphics.FillRectangle(labelBackColorBrush, 0, 0, sngControlWidth, sngControlHeight);
sngTransformX = 0;
sngTransformY = sngControlHeight;
e.Graphics.TranslateTransform(sngTransformX, sngTransformY);
e.Graphics.RotateTransform(270);
e.Graphics.DrawString(labelText, Font, labelForeColorBrush, 0, 0);
}
public override string Text
{
get { return labelText; }
set
{
labelText = value;
Invalidate();
}
}
}