PDA

View Full Version : ایجاد یک child کنترل در حالت runtime ?



sarmad
پنج شنبه 27 اردیبهشت 1386, 01:52 صبح
سلام

دوستان بنده یه فرم دارم که بسته به event keypress برروی یک toolstrip که ساختم

به صورت runtime چند تا کنترل اضافه میکنه مثل button و textbox و combo .

حالا این کنترل ها رو با
toolstripe example =new toolstripecombobox();

در زمان اجرا به صورت public ایجاد میکنم و با
toolstripe1.items.add(example)

اونو به toolstripe1 اضافه میکنم که به صورت یک child از اون در میاد.

حالا مشکل اینجاست که در دفعه اول که keypress اتفاق میفته همه چیز بدون مشکل ایجاد میشه

اما زمانی که برروی combobox که زیر شاخه toolstripe هست کلیک میشه و کنترل ها رو با


toolstripe.items.clear() پاک میکنم دیگه برای بار دوم این کنترل ها برروی

toolstripe اضافه نمیشن و تنها دلیل این مشکل هم کلیک شدن برروی combo یا هرکدوم از کنترل

های toolstripe هست که میتونن ورودی بگیرن .

بنده احساس میکنم که اولا این حالت اضافه کردن کنترل ها به صورت زیر شاخه به toolstripe

اشتباهه (شایدم درست باشه) و اینکه آیا RIGHT]toolstripe.items.clear()[/RIGHT] عمل

درستی هست یا از dispose استفاده بشه؟

در ضمن برای نوشتن یک event برای کنترل های runtime حتما باید اون کنترل رو به صورت public

تعریف کرد؟


از اساتید محترم خواهش دارم بنده رو در صورت امکان راهنمایی بکنن

ممنون

kiani.mehdi
پنج شنبه 27 اردیبهشت 1386, 20:37 عصر
شاید سوالت را درست متوجه نشدم ولی
یه برنامه ساده نوشتم
برات کدش را میذارم
تو این برنامه روی فرم هروقت که کلید F را بزنی 4 تا toolStripbutton ساخته میشه و روی toolStrip قرار می گیره
روی هر کدوم از 4 تا toolStripbutton اضافه شده که کلیک کنی تمای انها پاک میشند

در دفعات بعدی هم با همون کلید F مراحل تکرا میشه و مشکلی پیش نمییاد
البته یک نکته که احتمالا مشکل تو هم همونه خاصیت KryPreview مربوط به فزم
برای اینکه رویداد های keyPress و keyDown در هر شرایطی درست کار کنند بایستی خاصیت keyPrevies مربوط به فرم را true کنی
در مورد event هم اصلا به صلاح نیست که کنترل هایی که در زمان runTime ساخته میشند را public تعریف کنی به دلیل encapsulation

پیش فرض خودش هم privater هست

در مورد اضافه و حذف کردن هم همین روش درسته

sarmad
جمعه 28 اردیبهشت 1386, 01:41 صبح
خیلی ممنون از نظر و کمکتون.

برسم خونه تست میکنم

kiani.mehdi
یک شنبه 30 اردیبهشت 1386, 23:50 عصر
چی شد
مشکلتون حل شد؟
حقش بود حداقل یه خبری میدادین
نه اینکه ....