نمایش نتایج 1 تا 2 از 2

نام تاپیک: مشکل استفاده از کنترل سفارشی ساز شده بعد از بستن VS2010

  1. #1

    مشکل استفاده از کنترل سفارشی ساز شده بعد از بستن VS2010

    سلام به همه

    مطابق با آموزش های شخص فرهیخته ای ، باتنی ساخته شده که خواص هم داره ، همین کلاس پایین
    برنامه یکبار که اجرا می کنم در قسمتی از نوار ابزار کنترل RJButton اضافه میشه ، همه چی اوکی و خوب
    هس اما بعضی وقتی ها که برنامه بسته میشه و دوباره برنامه رو باز می کنم
    حتما باید یه فرمی که این کنترل داخل اون استفاده نشه اجرا کنم
    دوباره دونه دونه تو فرم هایی که این کنترل هایی استفاده شده کلیک کنم
    و داستان هایی از این قبیل ..
    فکر می کنم راه بهینه تری برای حل این موضوع باید وجود داشته باشه


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    using System.Windows.Forms;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.ComponentModel;

    namespace WindowsFormsApplication1
    {
    public class RJButton : Button
    {
    //Fields
    private int borderSize = 0;
    private int borderRadius = 0;
    private Color borderColor = Color.PaleVioletRed;

    //Properties
    [Category("RJ Code Advance")]
    public int BorderSize
    {
    get { return borderSize; }
    set
    {
    borderSize = value;
    this.Invalidate();
    }
    }

    [Category("RJ Code Advance")]
    public int BorderRadius
    {
    get { return borderRadius; }
    set
    {
    borderRadius = value;
    this.Invalidate();
    }
    }

    [Category("RJ Code Advance")]
    public Color BorderColor
    {
    get { return borderColor; }
    set
    {
    borderColor = value;
    this.Invalidate();
    }
    }

    [Category("RJ Code Advance")]
    public Color BackgroundColor
    {
    get { return this.BackColor; }
    set { this.BackColor = value; }
    }

    [Category("RJ Code Advance")]
    public Color TextColor
    {
    get { return this.ForeColor; }
    set { this.ForeColor = value; }
    }

    //Constructor
    public RJButton()
    {
    this.FlatStyle = FlatStyle.Flat;
    this.FlatAppearance.BorderSize = 0;
    this.Size = new Size(150, 40);
    this.BackColor = Color.MediumSlateBlue;
    this.ForeColor = Color.White;
    this.Resize += new EventHandler(Button_Resize);
    }

    //Methods
    private GraphicsPath GetFigurePath(Rectangle rect, int radius)
    {
    GraphicsPath path = new GraphicsPath();
    float curveSize = radius * 2F;

    path.StartFigure();
    path.AddArc(rect.X, rect.Y, curveSize, curveSize, 180, 90);
    path.AddArc(rect.Right - curveSize, rect.Y, curveSize, curveSize, 270, 90);
    path.AddArc(rect.Right - curveSize, rect.Bottom - curveSize, curveSize, curveSize, 0, 90);
    path.AddArc(rect.X, rect.Bottom - curveSize, curveSize, curveSize, 90, 90);
    path.CloseFigure();
    return path;
    }

    protected override void OnPaint(PaintEventArgs pevent)
    {
    base.OnPaint(pevent);

    Rectangle rectSurface = this.ClientRectangle;
    Rectangle rectBorder = Rectangle.Inflate(rectSurface, -borderSize, -borderSize);
    int smoothSize = 2;
    if (borderSize > 0)
    smoothSize = borderSize;

    if (borderRadius > 2) //Rounded button
    {
    using (GraphicsPath pathSurface = GetFigurePath(rectSurface, borderRadius))
    using (GraphicsPath pathBorder = GetFigurePath(rectBorder, borderRadius - borderSize))
    using (Pen penSurface = new Pen(this.Parent.BackColor, smoothSize))
    using (Pen penBorder = new Pen(borderColor, borderSize))
    {
    pevent.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
    //Button surface
    this.Region = new Region(pathSurface);
    //Draw surface border for HD result
    pevent.Graphics.DrawPath(penSurface, pathSurface);

    //Button border
    if (borderSize >= 1)
    //Draw control border
    pevent.Graphics.DrawPath(penBorder, pathBorder);
    }
    }
    else //Normal button
    {
    pevent.Graphics.SmoothingMode = SmoothingMode.None;
    //Button surface
    this.Region = new Region(rectSurface);
    //Button border
    if (borderSize >= 1)
    {
    using (Pen penBorder = new Pen(borderColor, borderSize))
    {
    penBorder.Alignment = PenAlignment.Inset;
    pevent.Graphics.DrawRectangle(penBorder, 0, 0, this.Width - 1, this.Height - 1);
    }
    }
    }
    }
    protected override void OnHandleCreated(EventArgs e)
    {
    base.OnHandleCreated(e);
    this.Parent.BackColorChanged += new EventHandler(Container_BackColorChanged);
    }
    private void Container_BackColorChanged(object sender, EventArgs e)
    {
    this.Invalidate();
    }
    private void Button_Resize(object sender, EventArgs e)
    {
    if (borderRadius > this.Height)
    borderRadius = this.Height;
    }
    }
    }




  2. #2

    نقل قول: مشکل استفاده از کنترل سفارشی ساز شده بعد از بستن VS2010

    دوستان از کمکتون ممنونم ..

    با نسخه 2019 پروژه رو باز کردم حل شد ..

تاپیک های مشابه

  1. مشکل استفاده از دات نت بار در vs2010
    نوشته شده توسط setareh2013 در بخش برنامه نویسی مبتنی بر Microsoft .Net Framework
    پاسخ: 1
    آخرین پست: چهارشنبه 09 بهمن 1392, 09:45 صبح
  2. سوال: مشکل در استفاده از subreport در vs2010 در C#‎
    نوشته شده توسط valentine093 در بخش ابزارهای گزارش سازی
    پاسخ: 0
    آخرین پست: چهارشنبه 03 آبان 1391, 18:55 عصر
  3. سوال: استفاده از sql2005 به همراه vs2010
    نوشته شده توسط gorywolf در بخش ASP.NET Web Forms
    پاسخ: 6
    آخرین پست: دوشنبه 12 تیر 1391, 14:19 عصر
  4. سوال: استفاده از sql در خود vs2010
    نوشته شده توسط ostour در بخش C#‎‎
    پاسخ: 2
    آخرین پست: چهارشنبه 21 دی 1390, 09:20 صبح
  5. منوی راستچین داخل خود vs2010
    نوشته شده توسط sara_aryanfar در بخش ASP.NET Web Forms
    پاسخ: 7
    آخرین پست: یک شنبه 17 مهر 1390, 18:22 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •