افزونه 1 پاک کردن مقادیر تمامی textbox های موجود در فرم #C

MPERSIA4

Member
دوباره سلام!!
میخوام کل تکست باکس های توی فرممو خالی کنم!!
البته اسماشون یکی نیست!
خیلی دربارش گشتم ولی ب نتیجه نرسیدم!
 
آخرین ویرایش:

the_king

مدیرکل انجمن
دوباره سلام!!
میخوام کل تکست باکس های توی فرممو خالی کنم!!
البته اسماشون یکی نیست!
خیلی دربارش گشتم ولی ب نتیجه نرسیدم!

کد:
[COLOR="#A9A9A9"]        private void button1_Click(object sender, EventArgs e)
        {[/COLOR]
[B]            ClearTextBox(this);[/B]
[COLOR="#A9A9A9"]        }[/COLOR]

        void ClearTextBox(Control c)
        {
            if (c is TextBox)
            {
                c.Text = "";
            }
            else if (c.HasChildren)
            {
                foreach (Control child in c.Controls)
                {
                    ClearTextBox(child);
                }
            }
        }
 

kern

Member
کد:
[COLOR=#A9A9A9]        private void button1_Click(object sender, EventArgs e)
        {[/COLOR]
[B]            ClearTextBox(this);[/B]
[COLOR=#A9A9A9]        }[/COLOR]

        void ClearTextBox(Control c)
        {
            if (c is TextBox)
            {
                c.Text = "";
            }
            else if (c.HasChildren)
            {
                foreach (Control child in c.Controls)
                {
                    ClearTextBox(child);
                }
            }
        }
سلام. اگه بخوایم علاوه بر TextBox متن ComboBox هم به متن پیشفرض برگرده (خالی یا گزینه ی اول) چه تغیراتی رو باید بدیم؟!
 

the_king

مدیرکل انجمن
سلام. اگه بخوایم علاوه بر TextBox متن ComboBox هم به متن پیشفرض برگرده (خالی یا گزینه ی اول) چه تغیراتی رو باید بدیم؟!



کد:
[COLOR="#A9A9A9"]        private void button1_Click(object sender, EventArgs e)
        {[/COLOR]
[B]            ClearTextBox(this);[/B]
[COLOR="#A9A9A9"]        }[/COLOR]

        void ClearTextBox(Control c)
        {
            if (c is TextBox)
            {
                c.Text = "";
            }
[B][COLOR="#0000FF"]            else if (c is ComboBox)
            {
                c.Text = "";
            }
[/COLOR][/B]            else if (c.HasChildren)
            {
                foreach (Control child in c.Controls)
                {
                    ClearTextBox(child);
                }
            }
        }
 

m.h.124

Member
با سلام
اگر بخواهم تابع را در یک کلاس بگذارم. و فراخوانی اش را در چندین فرم داشته باشم .با ید چطور فراخوانی کنم؟
 

the_king

مدیرکل انجمن
با سلام
اگر بخواهم تابع را در یک کلاس بگذارم. و فراخوانی اش را در چندین فرم داشته باشم .با ید چطور فراخوانی کنم؟

ابتدا یک کلاس می سازید، فرضا Class1 و خود کلاس رو public در نظر می گیرید :
کد:
    [B]public[/B] class Class1
    {
    }

ابتدای کد using ها قرار می گیره، using System.Windows.Form رو بهش اضافه می کنید :
کد:
using System.Windows.Forms
.
.
.
    public class Class1
    {
    }

موقع اضافه کردن تابع داخل کلاس عبارت کلیدی public رو بهش اضافه کنید تا از بیرون کلاس قابل فراخوانی باشه :
کد:
.
.
.
        [B]public[/B] void ClearTextBox(Control c)
        {
.
.
.
        }

حالا دو تا کار می توانید بکنید، یکی اینکه از اون کلاس شیء بسازید و تابع رو از داخل شیء اجرا کنید :

کد:
            Class1 c = new Class1();
            c.ClearTextBox(this);

راه دوم اینه که موقع تعریف تابع عبارت کلیدی static رو بهش اضافه کنید :
کد:
        public [B]static[/B] void ClearTextBox(Control c)
        {
اینطوری دیگه تابع کاری با شیء نداره، از اسم خود کلاس استفاده می کنید :
کد:
            Class1.ClearTextBox(this);
 

m.h.124

Member
با سلام
اگر بخواهم تیک radioButton هم با این تابع از بین برود باید چه کدی اضافه کنم؟البته منظورم تکستش نیست بلکه می خواهم علامتش از بین برود.من به ترتیب کدهای زیر را وار کردم که اولی خطا داد و دومی خطا نداد ولی کاری هم انجام نداد.

else if (c is RadioButton)
{
c.Cheked = true;
}

else if (c is RadioButton)
{
c.Visible = true;
}

با تشکر
 
آخرین ویرایش:

the_king

مدیرکل انجمن
با سلام
اگر بخواهم تیک radioButton هم با این تابع از بین برود باید چه کدی اضافه کنم؟البته منظورم تکستش نیست بلکه می خواهم علامتش از بین برود.من به ترتیب کدهای زیر را وار کردم که اولی خطا داد و دومی خطا نداد ولی کاری هم انجام نداد.

else if (c is RadioButton)
{
c.Cheked = true;
}



با تشکر

منطق کد تون درسته، c ممکنه RadioButton باشه و اگه باشه Checked قابل دسترسی ئه، اما کامپایلر اونقدر هوشمند نیست که از (if (c is RadioButton ای که می نویسید چنین نتیجه ای بگیره.
کامپایلر بدون راهنمایی c رو صرفا یک Control می بینه چون متغیر c رو از نوع Control تعریف کرده ایم و Control ها هم Checked ندارند. کامپایلر ایراد می گیره که یک Control چیزی به نام Checked نداره.
این مشکل رو برای Text نداشتید، چون Control ها مشخصه Text رو دارند، اما Checked چنین وضعیتی رو نداره.
شما باید کامپایلر رو راهنمایی کنید که c رو یک RadioButton تصور کنه :

کد:
[COLOR="#A9A9A9"]            if (c is TextBox)
            {
                c.Text = "";
            }
            else if (c is ComboBox)
            {
                c.Text = "";
            }
[/COLOR][COLOR="#0000FF"][B]            else if (c is RadioButton)
            {
                (c as RadioButton).Checked = false;
            }
[/B][/COLOR][COLOR="#A9A9A9"]            else if (c.HasChildren)
            {
                foreach (Control child in c.Controls)
                {
                    ClearTextBox(child);
                }
            }[/COLOR]
 

جدیدترین ارسال ها

بالا