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

نام تاپیک: لیست نام component های فرم ایجاد شده runtime

  1. #1
    کاربر تازه وارد آواتار roya_hh
    تاریخ عضویت
    آذر 1384
    محل زندگی
    اصفهان
    پست
    32

    لیست نام component های فرم ایجاد شده runtime

    چگونه می توان اسم تمامی کامپوننتهای روی فرمی که runtime ایجاد شده است و بر روی آن کامپوننت قرار داده شده است را بدست آورد؟

  2. #2
    کاربر دائمی آواتار anooshiran
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    تهران anoosh_resha@yahoo.com
    پست
    576

    نقل قول: لیست نام component های فرم ایجاد شده runtime

    دوست عزيز سلام

    با كد زير



    Dim ControlArray(Me.Controls.Count - 1) AsString
    Dim i As Int16 = 0
    ForEach ctr AsObjectInMe.Controls
    ControlArray(i) = ctr.Name
    i += 1
    Next

    ميتواني نام كنترل هاي روي فرم را پيدا كرده و در يك آرايه بريزي

    اميدوارم مشكلت را حل كند

  3. #3
    کاربر تازه وارد آواتار roya_hh
    تاریخ عضویت
    آذر 1384
    محل زندگی
    اصفهان
    پست
    32

    نقل قول: لیست نام component های فرم ایجاد شده runtime

    جواب نمیده. یعنی اسم کامپوننت ها را بر نمی گرداند. و همه کامپوننتها را هم به لیست اضافه نمی کند. فقط 3-4 تارا به این array اضافه میکنه ( در صورتیکه من 3تا textbox و 3تا panel و 3تا lable و 5تا button بر روی فرم دارم)
    آخرین ویرایش به وسیله roya_hh : سه شنبه 29 بهمن 1387 در 09:57 صبح

  4. #4
    کاربر دائمی آواتار anooshiran
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    تهران anoosh_resha@yahoo.com
    پست
    576

    نقل قول: لیست نام component های فرم ایجاد شده runtime

    نقل قول نوشته شده توسط roya_hh مشاهده تاپیک
    جواب نمیده. یعنی هیچ کدوم از component ها را روی فرم نمیشناسه
    مقدار a.Controls.Count را صفر بر میگرداند. (a فرمی است که run time ایجاد شده و دارای 3 تا component است)
    در چه event اين كد را استفاده كردي؟
    اگر در Load باشه كه هنوز كنترل add نشده.
    روي فرمت براي امتحان يك button هم بگذار و بعد از لود شدن از button_Click استفاده كن.

    در هر صورت اين كد جواب ميده. مهم اين است كه وقتي كنترل ها add شدن اين كد به روال بيفته.
    باز هم اگر مشكلي بود بگو

  5. #5
    کاربر تازه وارد آواتار roya_hh
    تاریخ عضویت
    آذر 1384
    محل زندگی
    اصفهان
    پست
    32

    نقل قول: لیست نام component های فرم ایجاد شده runtime

    ممنون از لطف شما. بقیه component ها که اضافه نمی شد به این خاطر بود که در panel ها add شده بودند نه در فرم.

  6. #6
    کاربر تازه وارد آواتار roya_hh
    تاریخ عضویت
    آذر 1384
    محل زندگی
    اصفهان
    پست
    32

    نقل قول: لیست نام component های فرم ایجاد شده runtime

    مقادیر این کامپوننت ها را چطور بدست بیارم؟
    من یک event handler نوشته ام برای عملیات insert، تا این مرحله مشکلی ندارم و با استفاده از همان array بالا این کار را انجام می دهم:
    )insert into table1 (id,field1,field2,field3) values
    اما حالاکه می خواهم مقادیر را وارد کنم دچار مشکل شدم و نمی دونم چطور این مقادیر را بدست بیاورم.

  7. #7
    کاربر دائمی آواتار anooshiran
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    تهران anoosh_resha@yahoo.com
    پست
    576

    نقل قول: لیست نام component های فرم ایجاد شده runtime

    نقل قول نوشته شده توسط roya_hh مشاهده تاپیک
    مقادیر این کامپوننت ها را چطور بدست بیارم؟
    من یک event handler نوشته ام برای عملیات insert، تا این مرحله مشکلی ندارم و با استفاده از همان array بالا این کار را انجام می دهم:
    )insert into table1 (id,field1,field2,field3) values
    اما حالاکه می خواهم مقادیر را وارد کنم دچار مشکل شدم و نمی دونم چطور این مقادیر را بدست بیاورم.

    دوست عزيز

    من سئوال شما را درست متوجه نشدم

    آيا در Insert كردن مشكل داري؟ اگر اينطوره كد insert را برام بنويس

    در ثاني منظور شما از Tag و SumMenu چيه؟ اين رو هم درست متوجه نميشم . اگر امكان دارد از لغات رايج خود ‍control استفاده كن تا متوجه بشم.
    در هر صورت اميدوارم بتتوانم كمكي كنم.

  8. #8
    کاربر تازه وارد آواتار roya_hh
    تاریخ عضویت
    آذر 1384
    محل زندگی
    اصفهان
    پست
    32

    Unhappy نقل قول: لیست نام component های فرم ایجاد شده runtime

    فرمی که run time ایجاد کردم دارای تعدادی کامپوننت (textbox , button) است که بر مبنای آنها فیلد در یک جدول در دیتابیس دارم. حالا می خواهم در این کامپوننت ها مقادیر را وارد کرده و با زدن یک کلید این اطلاعات در در جدول وارد شود.
    زمانی که button ایجاد می شود یک event handler به این صورت برایش نوشته ام:
    AddHandler btn1.Click, AddressOf btninsertclick
    حالا در Sub btninsertclick(ByVal sender As Object, ByVal e As EventArgs باید query inset را بنویسم.
    تااین قسمت که اسم فیلد ها را قرار میدهد مشکلی ندارم ، اما برای مقادیر نمی دانم چطور به مقادیر کامپوننتهای روی فرم(مقادیر textbox) ها دست پیدا کنم:
    (????????????????????)insert into table1 (id,field1,field2,field3) values

  9. #9

    نقل قول: لیست نام component های فرم ایجاد شده runtime

    اگه منظورت پیداکردن کنترل ها روی فرم باشه کد زیر کارتو راه می ندازه

    Dim ctl as Object = Me.GetNextControl(Me,True)
    Do Until ctl Is Nothing
    If TypeOf (ctl) Is Button Then
    DataGridView1.Rows.add(Ctl.Name)
    End If
    ctl = Me.GetNextControl(ctl, True)
    Loop

    البته شرط TypeOf رو باید بر داری

  10. #10
    کاربر دائمی آواتار anooshiran
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    تهران anoosh_resha@yahoo.com
    پست
    576

    نقل قول: لیست نام component های فرم ایجاد شده runtime

    نقل قول نوشته شده توسط roya_hh مشاهده تاپیک
    فرمی که run time ایجاد کردم دارای تعدادی کامپوننت (textbox , button) است که بر مبنای آنها فیلد در یک جدول در دیتابیس دارم. حالا می خواهم در این کامپوننت ها مقادیر را وارد کرده و با زدن یک کلید این اطلاعات در در جدول وارد شود.
    زمانی که button ایجاد می شود یک event handler به این صورت برایش نوشته ام:
    AddHandler btn1.Click, AddressOf btninsertclick
    حالا در Sub btninsertclick(ByVal sender As Object, ByVal e As EventArgs باید query inset را بنویسم.
    تااین قسمت که اسم فیلد ها را قرار میدهد مشکلی ندارم ، اما برای مقادیر نمی دانم چطور به مقادیر کامپوننتهای روی فرم(مقادیر textbox) ها دست پیدا کنم:
    (????????????????????)insert into table1 (id,field1,field2,field3) values

    سلام دوست عزيز

    شما مي توانيد از AddWithValue براي اضافه كردن مقادير استفاده كنيد.


    sqlCon.Open()
    sqlCom.CommandText =
    "INSERT INTO TableName (id,field1,field2,field3) VALUES (@id,@field1,@field2,@field3)"
    With sqlCom.Parameters
    .Clear()
    .AddWithValue(
    "@id", id)
    .AddWithValue(
    "@field1", txt1.Text)
    .AddWithValue(
    "@field2", txt2.Text)
    .AddWithValue(
    "@field3", txt3.Text)
    EndWith
    sqlCom.ExecuteNonQuery()
    sqlCon.Close()



    شما در query هر فيلد را معادل نام همان فيلد قزار داده ولي دركنار نام در قسمت value علامت @ را اضافه كنيد .بعد همانطور كه در كد مي بينيد از طريق AddWithValue مقادير كنترل هاي خود را به فيلد بدهيد.
    اميدوارم مشكل شما را حل كند

  11. #11
    کاربر دائمی
    تاریخ عضویت
    خرداد 1382
    محل زندگی
    تهران
    پست
    424

    نقل قول: لیست نام component های فرم ایجاد شده runtime

    اگر این کد رو در رویداد کلیک دکمه قرار بدین، می تونین به مقادیر دسترسی پیدا کنین. البته من فقط کنترل های تکست باکس رو از توی فرم جدا کردم.
            Dim frm As Windows.Forms.Control = CType(sender, Button).Parent
    Dim ctl As Control = frm.GetNextControl(frm, True)
    Dim AryLstControl As New ArrayList

    Do Until ctl Is Nothing
    If TypeOf (ctl) Is TextBox Then
    AryLstControl.Add(ctl)
    End If
    ctl = frm.GetNextControl(ctl, True)
    Loop

    For Each item As TextBox In AryLstControl
    Select Case item.Name
    Case "txtField"
    strFieldValue = item.Text
    Case "txtName"
    strNameValue = item.Text
    Case "txtId"
    strIdValue = item.Text
    End Select
    Next
    آخرین ویرایش به وسیله naeeme : چهارشنبه 30 بهمن 1387 در 11:21 صبح

  12. #12

    نقل قول: لیست نام component های فرم ایجاد شده runtime

    تمام کنترل های نمایش داده شده در فرم الزاماً عضوی از Me.Controls نیستند. آنها ممکن است عضو لیستی مانند Me.Panel1.Controls باشند. لذا شما به منظور کسب نام تمامی کنترل ها کد پست شماره 9 را به ازای تمام کنترل های یافت شده مجدداً باید انجام دهید.

    مثال:

    Public Class Form1

    Dim CtrlsList As New List(Of Control)
    '
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    GetControlOf(Me)
    End Sub
    Private Sub GetControlOf(ByVal Ctrl As Control)
    For Each c As Control In Ctrl.Controls
    CtrlsList.Add(c)
    GetControlOf(c)
    Next
    End Sub
    End Class

  13. #13
    کاربر تازه وارد آواتار roya_hh
    تاریخ عضویت
    آذر 1384
    محل زندگی
    اصفهان
    پست
    32

    نقل قول: لیست نام component های فرم ایجاد شده runtime

    نقل قول نوشته شده توسط naeeme مشاهده تاپیک
    اگر این کد رو در رویداد کلیک دکمه قرار بدین، می تونین به مقادیر دسترسی پیدا کنین. البته من فقط کنترل های تکست باکس رو از توی فرم جدا کردم.
            Dim frm As Windows.Forms.Control = CType(sender, Button).Parent
    Dim ctl As Control = frm.GetNextControl(frm, True)
    Dim AryLstControl As New ArrayList

    Do Until ctl Is Nothing
    If TypeOf (ctl) Is TextBox Then
    AryLstControl.Add(ctl)
    End If
    ctl = Me.GetNextControl(ctl, True)
    Loop

    For Each item As TextBox In AryLstControl
    Select Case item.Name
    Case "txtField"
    strFieldValue = item.Text
    Case "txtName"
    strNameValue = item.Text
    Case "txtId"
    strIdValue = item.Text
    End Select
    Next
    ممکنه کمی درباره کدی که قرار دادید توضیح بدهید؟ اگر کنترلها(textbox) داخل panel قرار داشته باشند چکار کنم؟

  14. #14
    کاربر دائمی
    تاریخ عضویت
    خرداد 1382
    محل زندگی
    تهران
    پست
    424

    نقل قول: لیست نام component های فرم ایجاد شده runtime

    اگر شما 50 تا panel متداخل هم داشته باشی، این کد تمام کنترلهای داخل اونها رو بر می گردونه. دلیلش هم این هست که در کدی که دوستمون davoodrm666_666 نوشتن و من برای کار شما مناسبش کردم، در حلقه Do تمام کنترلها جستجو میشن.
    فقط به این نکته توجه کنین که ctl = Me.GetNextControl(ctl, True)
    باید به ctl = frm.GetNextControl(ctl, True)
    تبدیل بشه. فکر کنم این کد کارتون رو راه میندازه.

  15. #15
    کاربر تازه وارد آواتار roya_hh
    تاریخ عضویت
    آذر 1384
    محل زندگی
    اصفهان
    پست
    32

    نقل قول: لیست نام component های فرم ایجاد شده runtime

    نقل قول نوشته شده توسط naeeme مشاهده تاپیک
    اگر شما 50 تا panel متداخل هم داشته باشی، این کد تمام کنترلهای داخل اونها رو بر می گردونه. دلیلش هم این هست که در کدی که دوستمون davoodrm666_666 نوشتن و من برای کار شما مناسبش کردم، در حلقه Do تمام کنترلها جستجو میشن.
    فقط به این نکته توجه کنین که ctl = Me.GetNextControl(ctl, True)
    باید به ctl = frm.GetNextControl(ctl, True)
    تبدیل بشه. فکر کنم این کد کارتون رو راه میندازه.
    ببخشید این کد فقط panel که button توی اون قرار داره را میگرده ولی بقیه panel ها را نمیگرده که مقادیر کنترلها را برگرداند. اگر در panel که button ها قرار دارد یک textbox قرار دهیم مقدار آنرا بر میگرداند اما به بقیه panel ها اصلا وارد نمی شود؟
    آخرین ویرایش به وسیله roya_hh : چهارشنبه 30 بهمن 1387 در 12:00 عصر

  16. #16

    نقل قول: لیست نام component های فرم ایجاد شده runtime

    نقل قول نوشته شده توسط roya_hh مشاهده تاپیک
    ببخشید این کد فقط panel که button توی اون قرار داره را میگرده ولی بقیه panel ها را نمیگرده که مقادیر کنترلها را برگرداند. اگر در panel که button ها قرار دارد یک textbox قرار دهیم مقدار آنرا بر میگرداند اما به بقیه panel ها اصلا وارد نمی شود؟
    همونطور که گفتم شما باید شرط TypeOf رو تغییر بدید برای TextBox بنویسید TypeOf(TextBox)

  17. #17
    کاربر تازه وارد آواتار roya_hh
    تاریخ عضویت
    آذر 1384
    محل زندگی
    اصفهان
    پست
    32

    نقل قول: لیست نام component های فرم ایجاد شده runtime

    نقل قول نوشته شده توسط davoodrm666_666 مشاهده تاپیک
    همونطور که گفتم شما باید شرط TypeOf رو تغییر بدید برای TextBox بنویسید TypeOf(TextBox)
    من از کدی که دستمون naeeme گذاشته بودند استفاده کردم. اگه ممکنه بگید کجای این کرد باید تغییر کنه:


    Dim frm As Windows.Forms.Control = CType(sender, Button).Parent
    Dim ctl As Control = frm.GetNextControl(frm, True)
    Dim AryLstControl As New ArrayList

    Do Until ctl Is Nothing
    If TypeOf (ctl) Is TextBox Then
    AryLstControl.Add(ctl)
    End If
    ctl = frm.GetNextControl(ctl, True)
    Loop

    For Each item As TextBox In AryLstControl
    Select Case item.Name
    Case "txtfield22"
    MsgBox(item.Text)
    End Select
    Next

  18. #18
    کاربر دائمی آواتار anooshiran
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    تهران anoosh_resha@yahoo.com
    پست
    576

    نقل قول: لیست نام component های فرم ایجاد شده runtime

    سلام دوست عزيز

    يك نگاهي به اين پروژه كوچك كه بازسازي تقريبي برنامه شماست بنداز

    فكر مي كنم مشكلت حل بشه
    فایل های ضمیمه فایل های ضمیمه

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

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