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

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

  1. #1

    بدست اوردن نام تمامی کنترلها

    سلام. خسته نباشید.
    من در صفحه خودم تعدادی textbox دارم و بعنوان مثال می خوام رنگ زمینه تمامی اونها رو تغییر بدم. اما نمی دونم که چطور باید این کار رو بکنم. به نظر باید با حلقه for..each این کار رو انجام داد. اما چگونگیشو نمی دونم. در ضمن من علاو بر textbox کنترلهای دیگه ای هم در اون صفحه دارم.

    اگه امکان داره منو راهنمایی کنید.
    متشکرم

  2. #2
    کاربر دائمی
    تاریخ عضویت
    آبان 1387
    محل زندگی
    تهران - بچه اشکور شهرستان رودسر
    سن
    47
    پست
    243

    نقل قول: بدست اوردن نام تمامی کنترلها

    اشیاء یک فرم در اخل پروپرتی controlsقرار دارند با چک کردن انها می توانید این کار را انجام دهید
    در کد زیر تمامی تکس باکس ها را با تکس "اسماعیل احمدنیا" پر می کند شما می توانید هر پروپرتی دیگر را تغییر دهید وحتی می توانید شی را کلا: حذف ویا یک شی جدید ایجاد و رو فرم قرار دهید .اصولا" این کار پایه واساس فرم جنریتور می باشد.سوالی بود د ر خدمتیم . موفق باشید

    for (int i = 0; i <
    this.Controls.Count; i++)
    {
    if (this.Controls[i].GetType() == typeof(
    TextBox
    ))
    {

    this.Controls[i].Text= "اسماعیل احمدنیا";
    }
    }

    آخرین ویرایش به وسیله s_ahmadneya : جمعه 15 آذر 1387 در 11:58 صبح دلیل: تصیح کد

  3. #3

    نقل قول: بدست اوردن نام تمامی کنترلها

    کد فوق صحیح نیست. چون فقط سطح اول کنترل های صفحه رو برگشت میده.
    تمامی کنترل های صفحه در سلسله مراتب پدر فرزندی قرار می گیرن که باید از طریق یک "تابع بازگشتی" به فرزندان کنترل مورد نظر دسترسی پیدا کرد.

    یک تابع نمونه واست نوشتم به شکل ذیل:

    VB.NET

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
    GetControls(Me) 'Example 1
    'GetControls(GridView1) 'Example 2
    'GetControls(Panel1) 'Example 3
    End Sub

    Private Sub GetControls(ByVal parentControl As Control)
    For Each ctl As Control In parentControl.Controls

    If (ctl.HasControls) Then
    GetControls(ctl)
    ElseIf (ctl.GetType Is GetType(TextBox)) Then
    DirectCast(ctl, TextBox).BackColor = Drawing.Color.Yellow
    End If

    Next
    End Sub


    C#‎

    protected void Button1_Click(object sender, EventArgs e)
    {
    GetControls(Me); //Example 1
    //GetControls(GridView1); //Example 2
    //GetControls(Panel1); //Example 3
    }

    private void GetControl(System.Web.UI.Control parentControl)
    {
    foreach (System.Web.UI.Control ctl in parentControl.Controls)
    {
    if (ctl.HasControls())
    {
    GetControl(ctl);

    }
    else if (ctl.GetType() == typeof(TextBox))
    {
    ((TextBox)ctl).BackColor = System.Drawing.Color.Yellow;
    }
    }
    }

    در کدهای بالا، رنگ پس زمینه ی تمامی TextBox های موجود در صفحه زرد میشه. برای اینکه فقط TextBox خاصی رو تحت تاثیر قرار بدی، می تونی اون TextBox ها رو در کنترل Panel قرار بدی و به متد GetControls، نام کنترل Panel رو پاس بدی.

    موفق باشید.

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

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