PDA

View Full Version : سوال: ساخت كنترل كلاس TextBox



Iran58
شنبه 10 آبان 1393, 08:39 صبح
سلام
چگونه می توانم یک کنترل از کلاس textbox بسازم
باتشکر

rasoolf
شنبه 10 آبان 1393, 09:09 صبح
سلام
چگونه می توانم یک کنترل از کلاس textbox بسازم
باتشکر

یعنی چی؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

fri jun
شنبه 10 آبان 1393, 09:13 صبح
add >> component
بعد component باید از textbox ارثبزی کنه...

public partial class Component1 : Component

جایگزین بشه با :

public partial class Component1 : System.Windows.Forms.TextBox

Iran58
شنبه 10 آبان 1393, 09:14 صبح
سلام
یک کامپونت برای textbox می خواهم بسازم
اما نمی خواهم داخل usercontrol باشد چون امکان multilineکردن textbox از بین می رود برای همین می خواهم یک کنترل برای textbox مورد نظر بسازم

Iran58
شنبه 10 آبان 1393, 11:03 صبح
add >> component
بعد component باید از textbox ارثبزی کنه...

public partial class Component1 : Component

جایگزین بشه با :

public partial class Component1 : System.Windows.Forms.TextBox
من کد زیر را نوشته ام
using System.ComponentModel;
using System.Drawing;

namespace TextBoxARAF
{
public partial class Component1 : System.Windows.Forms.TextBox
{
public Component1()
{
InitializeComponent();
}

public Component1(IContainer container)
{
container.Add(this);

InitializeComponent();
}

public string Text
{
get { return textBox1.Text; }
set { textBox1.Text = value; }
}


private Color enterColor = Color.FromArgb(220, 250, 250);
private Color exitColor = Color.FromArgb(255, 255, 255);

private bool onlydigit = false;


public bool OnlyDigit
{
get { return onlydigit; }
set { onlydigit = value; }
}

public Color EnterColor
{
get { return enterColor; }
set { enterColor = value; }
}

public Color ExitColor
{
get { return exitColor; }
set { exitColor = value; }
}

private void textBox1_Leave(object sender, System.EventArgs e)
{
textBox1.BackColor = exitColor;
}

private void textBox1_Click(object sender, System.EventArgs e)
{
textBox1.Focus();
textBox1.SelectAll();
textBox1.BackColor = EnterColor;
}


}
}


اما در هنگام فراخوانی در برنامه مورد نظر رنگهای textboxهای مورد نظر تغییر نمی کند

pedram.11
شنبه 10 آبان 1393, 11:17 صبح
این دو خط رو اضافه کنید:
public Component1(){
InitializeComponent();
AddEvents();
}

public Component1(IContainer container)
{
container.Add(this);

InitializeComponent();
AddEvents();
}
void AddEvents()
{
this.Leave += textBox1_Leave;
this.Click += textBox1_Click;
}

Iran58
شنبه 10 آبان 1393, 11:30 صبح
باسلام
متاسفانه جواب نداد نمی دام همینtextbox را داخل usercontrol می گذارم جواب می دهد اما از این روش می روم نمی دانم چرا سمت برنامه مانند یک textbox معمولی کار می کند
using System.ComponentModel;
using System.Drawing;

namespace TextBoxARAF
{
public partial class Component1 : System.Windows.Forms.TextBox
{
public Component1()
{
InitializeComponent();
AddEvents();
}

public Component1(IContainer container)
{
container.Add(this);

InitializeComponent();
AddEvents();
}
void AddEvents()
{
this.Leave += textBox1_Leave;
this.Click += textBox1_Click;
}

public string Text
{
get { return textBox1.Text; }
set { textBox1.Text = value; }
}


private Color enterColor = Color.FromArgb(220, 250, 250);
private Color exitColor = Color.FromArgb(255, 255, 255);

private bool onlydigit = false;


public bool OnlyDigit
{
get { return onlydigit; }
set { onlydigit = value; }
}

public Color EnterColor
{
get { return enterColor; }
set { enterColor = value; }
}

public Color ExitColor
{
get { return exitColor; }
set { exitColor = value; }
}

private void textBox1_Leave(object sender, System.EventArgs e)
{
textBox1.BackColor = exitColor;
}

private void textBox1_Click(object sender, System.EventArgs e)
{
textBox1.Focus();
textBox1.SelectAll();
textBox1.BackColor = EnterColor;
}


}
}

pedram.11
شنبه 10 آبان 1393, 11:43 صبح
به جای component یک کلاس جدید بسازید. و از تکستباکس ارث ببرید:
using System.Windows.Forms;using System.Drawing;


namespace TextBoxARAF
{
public class CustomTextBox : TextBox
{
public CustomTextBox()
{
}
}

حالا دو رویداد Leave و Click رو تعریف و کدهای دیگه رو بهش اضافه کنید. کل کلاس به این شکل میشه:
public class CustomTextBox : TextBox
{
public CustomTextBox()
{
this.Leave += CustomTextBox_Leave;
this.Click += CustomTextBox_Click;
}
private bool onlydigit = false;
private Color enterColor = Color.FromArgb(220, 250, 250);
private Color exitColor = Color.FromArgb(255, 255, 255);


public bool OnlyDigit
{
get { return onlydigit; }
set { onlydigit = value; }
}
public Color EnterColor
{
get { return enterColor; }
set { enterColor = value; }
}
public Color ExitColor
{
get { return exitColor; }
set { exitColor = value; }
}


void CustomTextBox_Leave(object sender, System.EventArgs e)
{
this.BackColor = ExitColor;
}
private void CustomTextBox_Click(object sender, System.EventArgs e)
{
this.Focus();
this.SelectAll();
this.BackColor = EnterColor;
}
}

پروژه رو یکبار build کنید(F6) بعدش کنترل جدیدی به نام CustomTextBox به ابزار اضافه میشه. توجه کنید که همون رو اضافه میکنید نه تکست باکس معمولی رو...