PDA

View Full Version : سوال: استفاده از خاصیت یک TextBox



MahmoodM30
سه شنبه 23 آذر 1395, 15:10 عصر
سلام میخواستم بدونم چطور میتونم از خاصیت یه Textbox که مربوط به تلریک هست تو خود TextBox پیش فرض سی شارپ استفاده کنم.

مثلا میخوام از قابلیت NullText مربوط به TextBox تلریک هست تو TextBox پیش فرض خود سی شارپ استفاده کنم.

radTextBox1.NullText = "نام کاربری";

بشه اون NullText رو به TextBox اضافه کرد

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

mrali.jalali
سه شنبه 23 آذر 1395, 15:36 عصر
می تونی با خاصیت enter و leave استفاده کنی. وقتی وارد شد متن پیش فرض پاک بشه وقتی خارج شد در صورت خالی بودن متن پیش فرض پر بشه . رنگ textbox هم کم رنگ بگیر

hamid_hr
سه شنبه 23 آذر 1395, 16:04 عصر
میتونی textbox رو برا خودت خصوصی سازس کنی
یک کلاس بساز و از textbox مشتق بگیر
بعد خاصیت nulltext بهش اضافه کن و کداشو بنویس
بعد تو کل پروژه هات از این تکس باس شخصی خودت استفاده کن

MahmoodM30
سه شنبه 23 آذر 1395, 17:11 عصر
میتونی textbox رو برا خودت خصوصی سازس کنی
یک کلاس بساز و از textbox مشتق بگیر
بعد خاصیت nulltext بهش اضافه کن و کداشو بنویس
بعد تو کل پروژه هات از این تکس باس شخصی خودت استفاده کن

ممنون میشم یه نمونه مثال از چیزی که فرمودید برام بنویسید تا یاد بگرم و باقیشو خودم انجام بدم

hamid_hr
چهارشنبه 24 آذر 1395, 11:14 صبح
این نمونه

PS_Txt.zip (http://barnamenevis.org/attachment.php?attachmentid=143770&stc=1&d=1481703152)
اینو به پروژه خودتون اضافه کنید. یک rebuilld بکنید. در قسمت toolbox یک کنترل جدید اضافه میشه بنام PS_Txt. این کنترل یک خاصیت داره بنام nulltext

MahmoodM30
دوشنبه 29 آذر 1395, 12:32 عصر
سلام ب همه میخواستم توی کلاس زیر این قابلیت ها رو بزارم ممنون میشم دوستان راهنمایی کنن

1- برای رویداد KeyPress چجوری کد بنویسم؟
2- میخوام مقداری رو هم تعیین کنم مثلا اگه true گرفت اون کار توی رویداد KeyPress انجام بشه
3- مقدار عددی و یا حرفو و کاراکتر دریافت کنه و بتونه به یه رویدادی بفرسته مثلا تو یه متغییر بریزه


using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Tmp
{
class PS_Txt:TextBox
{
private string nulltext = "";
public string NullText
{
get
{
return nulltext;
}
set
{
if (Text.Equals(nulltext)) Text = "";
nulltext = value;
}
}

private void SetNullText()
{
if (string.IsNullOrEmpty(Text))
{
Text = nulltext;
}
}

protected override void OnEnter(EventArgs e)
{
base.OnEnter(e);
if (Text == nulltext)
{
Text = "";
}
}

protected override void OnLeave(EventArgs e)
{
base.OnLeave(e);
SetNullText();
}
}
}


4- میخواستم بوردر تکست باکس هم تغییر بدم و من اومدم از این کد استفاده کردم ولی این یوزر کنترل هست و تمام خاصیت های تکست باکس رو نمیاره و من بخوام تو نمونه بالا استفاده کنم نمیتونم اگه بخوام این رو تو نمونه کدی که بالا هست وارد کنم به چه شکلی هست؟



public class BorderedTextBox : UserControl
{
TextBox textBox;
public BorderedTextBox()
{
textBox = new TextBox
{
BorderStyle = BorderStyle.FixedSingle,
Location = new Point(-1, -1),
Anchor = AnchorStyles.Top | AnchorStyles.Bottom |
AnchorStyles.Left | AnchorStyles.Right
};
Control container = new ContainerControl()
{
Dock = DockStyle.Fill,
Padding = new Padding(-1)
};
container.Controls.Add(textBox);
this.Controls.Add(container);
DefaultBorderColor = SystemColors.ControlDark;
FocusedBorderColor = Color.Red;
BackColor = DefaultBorderColor;
Padding = new Padding(1);
Size = textBox.Size;
}
public Color DefaultBorderColor { get; set; }
public Color FocusedBorderColor { get; set; }
public override string Text
{
get { return textBox.Text; }
set { textBox.Text = value; }
}
protected override void SetBoundsCore(int x, int y,

int width, int height, BoundsSpecified specified)
{
base.SetBoundsCore(x, y, width, textBox.PreferredHeight, specified);
}
private void InitializeComponent()

{
this.SuspendLayout();
//
// BorderedTextBox
//
this.Name = "BorderedTextBox";
this.Size = new System.Drawing.Size(108, 27);
this.ResumeLayout(false);
}

}

hamid_hr
دوشنبه 29 آذر 1395, 13:23 عصر
ببینین اگه فقط میخواین به کنترل textbox خاصیتی یا تابعی اضافه کنید بهتره از اون نمونه ای که در تاپیک 5 هست استفاده کنید. از user control برای تجمیع چند کنترل یا ساخت یک کنترل غیر متعارف استفاده میشه.(البته من اینطوری ازش استفاده میکنم)
1- شما میتونی رویداد keypress رو override کنید و چیزی که میخواین توش پیاده سازی کنید
2- میتونید یک خاصیت بهش اضافه کنید که قتی مقدارش true شد تو اون خاصیت override شده بتونین کاری که میخواین انجام بشه
3- میتونین توی رویداد textchange فیلتر کنین که تکس یا عدد بگیره
4- میتونی از خاصیت borderstyle استفاده کنید یا اگه پیشرفته میخواین کار کنین باید متد onpaint رو override کنید

MahmoodM30
دوشنبه 29 آذر 1395, 13:44 عصر
ممنون از جوابتون خب من اومد برای keypress به این شکل کار کردم جواب نمیده


private void txtProNetM_KeyPress(object sender, KeyPressEventArgs e)
{

}

و به این شکل هم کار نمیکنه


protected override void KeyPress(EventArgs e)
{

}

MahmoodM30
دوشنبه 29 آذر 1395, 13:47 عصر
در مورد سوال دیگه من به این شکل میتونم یه قابلت اضافه کنم که میشه هاصیت انخاب رنگ رو اضافه کرد حالا مشکل من اینجاست نمیدونم به جای color اینجا چی بنویسم ه بتونم true یا false بگیرم


public Color FocusedBackColor { get; set; }

hamid_hr
دوشنبه 29 آذر 1395, 14:00 عصر
ممنون از جوابتون خب من اومد برای keypress به این شکل کار کردم جواب نمیده


private void txtProNetM_KeyPress(object sender, KeyPressEventArgs e)
{

}

و به این شکل هم کار نمیکنه


protected override void KeyPress(EventArgs e)
{

}
الان ااینو تو usercontrol خودتون نوشتین؟
همون کلاس رو بزارین لطفا

hamid_hr
دوشنبه 29 آذر 1395, 14:03 عصر
در مورد سوال دیگه من به این شکل میتونم یه قابلت اضافه کنم که میشه هاصیت انخاب رنگ رو اضافه کرد حالا مشکل من اینجاست نمیدونم به جای color اینجا چی بنویسم ه بتونم true یا false بگیرم


public Color FocusedBackColor { get; set; }

از bool استفاده کنید

MahmoodM30
دوشنبه 29 آذر 1395, 14:04 عصر
نه تو کلاس

hamid_hr
دوشنبه 29 آذر 1395, 14:05 عصر
ممنون از جوابتون خب من اومد برای keypress به این شکل کار کردم جواب نمیده


private void txtProNetM_KeyPress(object sender, KeyPressEventArgs e)
{

}

و به این شکل هم کار نمیکنه


protected override void KeyPress(EventArgs e)
{

}



protected override void OnKeyPress(KeyPressEventArgs e)
{
base.OnKeyPress(e);
//کدهای شما

}


اینطوری بنویسین

MahmoodM30
دوشنبه 29 آذر 1395, 17:35 عصر
سلام مجدد من برای تغییر نوع نوشتن در تکست با این کد رو اضافه کردم به کلاسم
و طبق تصویر هم این قسمت ها رو دارم

143823

1- مشکل اینجاست وقتی TypeAllChar مقدارش رو میخوام به False تغییر بدم تغییر پیدا نمیکنه و ثابت true میمونه ممنون میشم دوستان راهنمایی کنن
2- وقتی میخوام هر کدوم از TypeFarsiOnly یا TypeEnglishOnly یا TypeNumerikOnly رو به true تغییر بدم TypeAllChar بشه false


public bool TypeFarsiOnly { get; set; }
public bool TypeEnglishOnly { get; set; }
public bool TypeNumerikOnly { get; set; }
bool typeallchar = true;
public bool TypeAllChar
{
get
{
return typeallchar;
}
set
{
if (typeallchar == true)
{
TypeAllChar = false;
TypeFarsiOnly = false;
TypeEnglishOnly = false;
TypeNumerikOnly = false;
}
}
}

hamid_hr
دوشنبه 29 آذر 1395, 18:14 عصر
توی SET باید اینو هم بنویسید

set{
typeallchar=value;
.....
}

codedeveloper
سه شنبه 30 آذر 1395, 10:47 صبح
public Form1()
{
InitializeComponent();
textBox1.ForeColor = SystemColors.GrayText;
textBox1.Text = "Please Enter Your Name";
this.textBox1.Leave += new System.EventHandler(this.textBox1_Leave);
this.textBox1.Enter += new System.EventHandler(this.textBox1_Enter);
}

private void textBox1_Leave(object sender, EventArgs e)
{
if (textBox1.Text.Length == 0)
{
textBox1.Text = "Please Enter Your Name";
textBox1.ForeColor = SystemColors.GrayText;
}
}

private void textBox1_Enter(object sender, EventArgs e)
{
if (textBox1.Text == "Please Enter Your Name")
{
textBox1.Text = "";
textBox1.ForeColor = SystemColors.WindowText;
}
}