PDA

View Full Version : سوال: خالی کردن متن TextBoxها



رامین مرادی
چهارشنبه 14 اسفند 1392, 19:35 عصر
سلام دوستان من توی یه فرمی چند تا تکست باکس دارم.نمی خوام دونه دونه متناشون رو پاک کنم واسه همین کد زیر رو نوشتم. ولی متاسفانه هیچ عملی صورت نمیگیره مشکل از کجاست.:عصبانی++:


foreach (Control c in this.Controls)
{
if (c is TextBox)
c.Text = "";//c.Text= string.Empty
}

nunegandom
چهارشنبه 14 اسفند 1392, 20:57 عصر
سلام، شما اومدی چک کردی که اون شیء تکست باکسه یا نه! ولی نیومدی بگی اون رو شیء تکست باکس فرض کنه
باید به این صورت عمل کنی

foreach (var item in Controls)
{
if (item is TextBox)
(item as TextBox).Text = "******";
}

golestan1
چهارشنبه 14 اسفند 1392, 22:31 عصر
foreach (Control txt in this.Controls)
{
if (txt.GetType().Name == "TextBox")
txt.Text = "";
}

رامین مرادی
پنج شنبه 15 اسفند 1392, 18:50 عصر
ممنون از لطفتون که توجه کردید پست دوم که کار نکرد.
پست سومم رو هم خودم قبل تست کرده بودم ولی نمیشه.

نمیشه یه راه حل کلی دیگه بگید ؟؟؟؟ :عصبانی++:

daniyaltjm
پنج شنبه 15 اسفند 1392, 19:21 عصر
private void button1_Click(object sender, EventArgs e) {
foreach (Control t in this.Controls)
{
if (t is TextBox)
t.Text = "";
}
}

Mahmoud.Afrad
پنج شنبه 15 اسفند 1392, 19:30 عصر
آیا از تکست باکس های پیش فرض ویژوال استادیو استفاده کردی؟
تکست باکس ها درون container ای مانند پنل قرار نداره؟

رامین مرادی
پنج شنبه 15 اسفند 1392, 19:36 عصر
داخا یه قروپ باکس قرار دارن البته بعضی هاش هم توی یه قروپ باک داخل یه قروپ باکس دیگه قرار دارن
ولی مگه ما نمیگیم this.controls !!!! این یعنی کل کنترل های این کلاس دیگه !!!!:متفکر:

Mahmoud.Afrad
پنج شنبه 15 اسفند 1392, 19:46 عصر
private void button1_Click(object sender, EventArgs e)
{
ClearTxt(this);
}

private void ClearTxt(Control control)
{
foreach (Control c in control.Controls)
{
if (c is TextBoxBase)
{
c.ResetText();
}
else if (c.Controls != null)
{
ClearTxt(c);
}
}
}

رامین مرادی
پنج شنبه 15 اسفند 1392, 19:51 عصر
ممنون Mahmoud.Afrad (http://barnamenevis.org/member.php?71297-Mahmoud-Afrad) عزیز واقعا این کد کلافم کرده بود دستت درد نکنه...

daniyaltjm
پنج شنبه 15 اسفند 1392, 19:52 عصر
با استفاده از خاصیت tag هم میتونی : تگ اون تکست باکسهایی رو که میخوای پاک بشن رو 1 بزار.

private void button1_Click(object sender, EventArgs e) {
foreach (Control t in this.Controls)
{
if (t.Tag=="1")
t.Text = "";
}
}

علی فتحی
چهارشنبه 02 اردیبهشت 1394, 18:50 عصر
public void ClearControl()
{
foreach (Control Ct in Controls)
{
if (Ct.GetType() == typeof(TextBox))
{
((TextBox)Ct).Text = "";
}
}
}

Amir4317
چهارشنبه 02 اردیبهشت 1394, 19:44 عصر
کد زیر رو درون یک کلاس در پروژه تون بگذارید:
برای تک تک کنترل هاتون باید تگ بگذارید، البته می تونید خودتون متن شرط رو به نوع کنترل تغییر بدید.


public static void ResetControls(this Control.ControlCollection controlCollection)
{
if (controlCollection == null) return;

foreach (Control control in controlCollection)
{
if (control.Controls != null) control.Controls.ResetControls();

var tag = control.Tag;
if (tag == null) continue;
switch (tag.ToString())
{
case "text": control.Text = null; break;
case "digit": control.Text = @"0"; break;
case "today": control.Text = new PersianDate(DateTime.Now).DateString; break;

}
}
}


حالا در پشت دکمه ریست این دستور رو کافیه بنویسید:


Controls.ResetControls();