PDA

View Full Version : سوال: نوشتن Property , AutoSize برای یک یوزر کنترل



papeli_83
جمعه 13 مرداد 1391, 16: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();
}
}
}

the king
جمعه 13 مرداد 1391, 17:35 عصر
از کلاسی که براتون نوشته بودم و AutoSize داشت استفاده نکردید، ایرادی داشت؟
مبتدی: قرار دادن لیبل بصورت عمودی بر روی فرم؟ !! (http://barnamenevis.org/showthread.php?353322)

papeli_83
جمعه 13 مرداد 1391, 18:10 عصر
از کلاسی که براتون نوشته بودم و AutoSize داشت استفاده نکردید، ایرادی داشت؟
مبتدی: قرار دادن لیبل بصورت عمودی بر روی فرم؟ !! (http://barnamenevis.org/showthread.php?353322)
سلام دوست عزیز

بله متاسفانه لیبیل عمودی شما هم مانند لیبل devcomponent یه مشکل داره و اونم اینه که وقتی لیببل رو به طور عمودی قرار می دیم وقتی طول متن بیشتر از اندازه لیبل باشه وبخواد افزایش سایز بده بجای اینکه به سمت بالا افزایش سایز بده به سمت پایین افزایش سایز میده ( خودتون امتحان کنین ) ولی کدی که من نوشتم به سمت بالا افزایش سایز می ده !!! (شکل زیر رو ببینید : چون به سمت پایین افزایش سایز میداد مجبور شدم لیبل های عمودی رو باین صورت قرار بدم !!!! و همونطور که می بینید خودنش مشکله)

90688
http://barnamenevis.org/images/misc/pencil.png

papeli_83
جمعه 13 مرداد 1391, 19:59 عصر
از دوستان کسی نیست که کمک کنه !!!!!!!!!!!!