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

نام تاپیک: بهترین روش اضافه کردن صدها Control در یک Panel

  1. #1
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,179

    بهترین روش اضافه کردن صدها Control در یک Panel

    سلام خدمت دوستان

    سوال من خیلی کلی هست. اضافه کردن یک Button به یک Control دیگه مثل Panel بسادگی انجام میشه. ولی اگر قرار باشه 1000 دکمه به Panel اضافه کنم بسیار کند انجام میشه و برنامه کند اجرا میشه. حالا فرض کنیم که یک UserControl ساختم که خودش از چندین Controlدرست شده و قرار هست حدود 1000 عدد از این UserControl در یک Panel اضافه کنم که قابلیت Scroll کردن هم داشته باشه. این کار برنامه را عملا از کا میندازه. برای چنین نیازی چه روشی مناسب هست؟ برای نمونه ComboBox و یا ListBox موجود در دات نت خیلی سریع کار میکنه ولی اگر قرار باشه همین LisBox را سفارشی ایجاد کنم برنامه خیلی کند اجرا میشه.

    ممنون اگر راهنمایی کنید

  2. #2
    کاربر دائمی آواتار ROSTAM2
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    فارس
    پست
    1,646

    نقل قول: بهترین روش اضافه کردن صدها Control در یک Panel

    نقل قول نوشته شده توسط mmbguide مشاهده تاپیک
    سلام خدمت دوستان

    سوال من خیلی کلی هست. اضافه کردن یک Button به یک Control دیگه مثل Panel بسادگی انجام میشه. ولی اگر قرار باشه 1000 دکمه به Panel اضافه کنم بسیار کند انجام میشه و برنامه کند اجرا میشه. حالا فرض کنیم که یک UserControl ساختم که خودش از چندین Controlدرست شده و قرار هست حدود 1000 عدد از این UserControl در یک Panel اضافه کنم که قابلیت Scroll کردن هم داشته باشه. این کار برنامه را عملا از کا میندازه. برای چنین نیازی چه روشی مناسب هست؟ برای نمونه ComboBox و یا ListBox موجود در دات نت خیلی سریع کار میکنه ولی اگر قرار باشه همین LisBox را سفارشی ایجاد کنم برنامه خیلی کند اجرا میشه.

    ممنون اگر راهنمایی کنید
    سلام.
    تاپیکی که ایجاذ کردی نمونه کد نداره.
    اگ از Loops استفاده می کنی متود DoEvents از کلاس Application کمک می کنه هنگ نکنه...

  3. #3
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,179

    نقل قول: بهترین روش اضافه کردن صدها Control در یک Panel

    سلام خدمت شما

    موضوع استفاده از DoEvents جهت آزاد سازی Thread و امثال اون نیست چون میشه در یک Thread جداگانه هم این کار رو انجام داد تا برنامه هنگ نکنه. بیشتر هدفم مقایسههستش و اینکه بتونم به راه حل برسم. برای مثال:
    1. ListBox خود ویدوز چجوری هزاران آیتم را سریع نمایش میده؟
    2. کنترل DataGridView چطور این همه سلول را نمایش میده؟
    3. یا برنامه ای مثل Excel چطور براحتی میلیاردها سلول را نمایش میده؟


    حالا در مقایسه با این موارد، چطور میشه یک کنترل با این ویژگی ایجاد کرد؟

    تشکر

  4. #4
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,057

    نقل قول: بهترین روش اضافه کردن صدها Control در یک Panel

    سلام و روز خوش

    شاید خیلی مرتبط با خواسته شما نباشه،
    ولی میتونین سورس کد کمپوننت های devexpress رو بررسی کنین ببینین برای کنترل های پیچیده چه کار کردن.
    اگر هنوز دنبال ایجاد گانت چارت هستین یک کنترل scheduler داره که روی اون میتونین این چارت رو بسازین.

  5. #5
    کاربر دائمی آواتار shahryari
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    آذربايجان
    سن
    40
    پست
    1,237

    نقل قول: بهترین روش اضافه کردن صدها Control در یک Panel

    سلام ، "بهترین روش اضافه کردن صدها Control در یک Panel "
    میتونی 10 تا 10 یا 20 تا 20 اضافه کنی وقتی مثلا پنلت اسکرول میشه و میرسه به پوزیشن آخرین کنترل ، مجدد 20 تای بعدی را اضافه کنی
    یا حتی میتونی با کمی کد نویسی ریسایکل بکنی و اون کنترول هایی که در دید نیستن و حذف کنی و مجدد اونایی که در دیسپلی میشن رو مجدد ایجاد کنی (عملکرد ریسایکلر ویو در اندروید)
    خلاصه (به قول یکی از دوستان) : روشهای سامورایی زیاده تا بخوای 1000 کنترول را به طبع در حلقه ایجاد کنی ، استفاده از ترد مجزا هم دردی را دوا نمیکنه
    pages-for-view-recycler-7a25475edce4b0d5.jpg
    آخرین ویرایش به وسیله shahryari : یک شنبه 26 آذر 1402 در 11:01 صبح

  6. #6
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,179

    نقل قول: بهترین روش اضافه کردن صدها Control در یک Panel

    سلام. ممنون از پیشنهاد شما. حتما این روش را هم امتحان میکنم.

    نقل قول نوشته شده توسط shahryari مشاهده تاپیک
    سلام ، "بهترین روش اضافه کردن صدها Control در یک Panel "
    میتونی 10 تا 10 یا 20 تا 20 اضافه کنی وقتی مثلا پنلت اسکرول میشه و میرسه به پوزیشن آخرین کنترل ، مجدد 20 تای بعدی را اضافه کنی
    یا حتی میتونی با کمی کد نویسی ریسایکل بکنی و اون کنترول هایی که در دید نیستن و حذف کنی و مجدد اونایی که در دیسپلی میشن رو مجدد ایجاد کنی (عملکرد ریسایکلر ویو در اندروید)
    خلاصه (به قول یکی از دوستان) : روشهای سامورایی زیاده تا بخوای 1000 کنترول را به طبع در حلقه ایجاد کنی ، استفاده از ترد مجزا هم دردی را دوا نمیکنه
    pages-for-view-recycler-7a25475edce4b0d5.jpg

  7. #7
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,179

    نقل قول: بهترین روش اضافه کردن صدها Control در یک Panel

    نقل قول نوشته شده توسط shahryari مشاهده تاپیک
    سلام ، "بهترین روش اضافه کردن صدها Control در یک Panel "
    میتونی 10 تا 10 یا 20 تا 20 اضافه کنی وقتی مثلا پنلت اسکرول میشه و میرسه به پوزیشن آخرین کنترل ، مجدد 20 تای بعدی را اضافه کنی

    درود به شما. درخصوص پیشنهاد شما و راه حلی که یکی از مهندسین در لینکدین ارائه دادند نتیجه انجام کار بدین صورت شد.

    https://www.linkedin.com/posts/hadim...member_desktop

    در واقع فقط یکبار کنترل ها اضافه میشوند و ثابت هستند ولی داده های جدید درزمان اسکرول جایگزین قبلیها می شوند.


    1- ارزیابی انجام کار جهت نمایش 30 آیتم بوده است.
    2- میزان حافظه اشغال شده توسط برنامه قبل از نمایش داده ها 13 مگابایت
    3- میزان حافظه اشغال شده توسط برنامه بعد از نمایش داده ها 17 مگابایت
    4- زمان تولید 1000 آیتم در یک لیست حدود 6 میلی ثانیه
    5- افزودن 30 آیتم خالی در FlowLayoutPanel بصورت ثابت حدود 600 میلی ثانیه که در ابتدای برنامه یکبار انجام می شود و اگر rezise صورت بگیرد این تعداد اصلاح خواهد شد.
    6- نمایش داده های موجود در لیست 1000 آیتمی در FlowLayoutPanel بصورت 30 تا 30 تا حدود 110 میلی ثانیه زمان می برد. داده ها با متد Take از لیست دریافت میشود.
    7- نمایش 30 آیتم بعدی در FlowLayoutPanel حدود 15 میلی ثانیه. داده ها با متد Take از لیست دریافت میشود و به نوعی Skip کردن آیتم ها قابل تنظیم است.




    باتشکر

  8. #8
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,179

    نقل قول: بهترین روش اضافه کردن صدها Control در یک Panel

    با توجه به پیاده سازیراه حل و خروجی نسبتا مناسب، یک کنترل به پکیج تحت نام CesListBox اضافه شده که اطلاعات آن در آدرس زیر دردسترس می باشد:

    https://barnamenevis.org/showthread....Ces-WinForm-UI

تاپیک های مشابه

  1. سوال: ساخت Control Panel با #C
    نوشته شده توسط Peresident Kiumars در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: پنج شنبه 08 فروردین 1392, 11:51 صبح
  2. آیکن برنامه در control panel
    نوشته شده توسط d_rabiee در بخش C#‎‎
    پاسخ: 1
    آخرین پست: چهارشنبه 25 اردیبهشت 1387, 11:59 صبح
  3. اجرای اجزای Control Panel با این برنامه
    نوشته شده توسط Armin62 در بخش برنامه نویسی در 6 VB
    پاسخ: 2
    آخرین پست: جمعه 29 تیر 1386, 00:36 صبح
  4. نحوه ایجاد یک فرم مانند Control Panel
    نوشته شده توسط سیروس مقصودی در بخش برنامه نویسی در Delphi
    پاسخ: 2
    آخرین پست: شنبه 20 خرداد 1385, 11:57 صبح

برچسب های این تاپیک

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

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