سلام،
می خواستم بدونم در طراحی فرمهایی مثل فرم مربوط به قسمت Options برنامه ها، فرضا قسمتی مثل Options مربوط به Office، فرم رو به چه روشی طراحی کنیم که سرعت حرکت بین تب پیج ها حداکثر باشه؟
سلام،
می خواستم بدونم در طراحی فرمهایی مثل فرم مربوط به قسمت Options برنامه ها، فرضا قسمتی مثل Options مربوط به Office، فرم رو به چه روشی طراحی کنیم که سرعت حرکت بین تب پیج ها حداکثر باشه؟
روش طراحی به سرعت ارتباطی نداره
هر چی تعداد اشیاء بیشتر باشه
سرعت پایین تره
بنابراین باید تعداد اشیاء رو پایین بیارید و تا حد امکان از اشیاء غیر استاندارد و عکس استفاده نکنید
اشیاء استاندارد هم منظورم اشیاء پیشفرض موجود در ویندوزه
منظورم از طراحی این نبود که فقط با ماوس کنترل ها رو روی فرم قرار بدیم و بگیم که فرم طراحی شد. در بعضی مواقعی کنترلهایی که مقدار ریسورسهای اشغال شده به وسیله اونها زیاد هست رو بهتره هر بار از بین ببریم و مجددا موقع نیاز ایجاد کنیم.روش طراحی به سرعت ارتباطی نداره
هر چی تعداد اشیاء بیشتر باشه
سرعت پایین تره
به این قسمت از نوشته ی اصلی من دقت کنید:بنابراین باید تعداد اشیاء رو پایین بیارید و تا حد امکان از اشیاء غیر استاندارد و عکس استفاده نکنید
من از طراحی فرمی مشابه، به سرعتی مشابه نرسیدم، به همین علت می خواستم بدونم بقیه دوستان برای حداکثر سرعت از چه روشی استفاده می کنن.فرضا قسمتی مثل Options مربوط به Office،
اون چیزی هم که شما میگی میشه
میتونید هر سربرگ رو توی یه دایلوگ قرار بدید و با کلیک شدن روی سربرگ مورد نظر همون دایلوگ رو توی پنجرهی اصلی Load کنید
فقط میمونه ذخیره سازی تنظیمات که با هر بار Load کردن بعدش هم باید تنظیمات رو از یه جایی بخونید و دوباره توی اشیاء ذخیره کنید که برنامهنویسیش یه کم مشکل میشه...
این روش روش منطقی نیست، چون به این ترتیب مقدار زیادی از زمان پروسسور صرف ایجاد و از بین بردن کنترلها میشه.با کلیک شدن روی سربرگ مورد نظر همون دایلوگ رو توی پنجرهی اصلی Load کنید
فقط میمونه ذخیره سازی تنظیمات که با هر بار Load کردن بعدش هم باید تنظیمات رو از یه جایی بخونید و دوباره توی اشیاء ذخیره کنید که برنامهنویسیش یه کم مشکل میشه...
یکی از روشهای پیشنهادی این بود که کنترلهای موجود در یه فرم رو در قالب یه UserControl طراحی کنیم و بعد برای اولین بار که روی یه تب کلیک شد، اون کنترل رو لود کنیم و اون رو توی حافظه قرار بدیم تا زمانی که فرم بسته بشه.
مشکل این روش در ارتباط بین کنترلهای قرار گرفته توی UserControl و فرم اصلیه، که به خصوص در فرم هایی که توی اونها از DataBinding استفاده شده یه مقدار مشکل میشه،
به نظر شما این روش که شما میگی کار رو راحت تر میکنه یا سختتر و آیا اصلا فایدهای داره؟
مسلما کد نویسی مشکل تری داره اما این طور که من متوجه شدم سرعت رو مقداری بالاتر میبره.
سرعت رو اگه پایین تر از روش عادی نکنه بالاتر نمیبره
مگه اشیاء داخل یه User Control باشن یا داخل پنجرهی اصلی باشن حافظهی اشغال شده توسط اونا و پردازشها شون کم و زیاد میشه
تازه با استفاده از User Control یه حافظه و یه پردازش هم به قبلیا اضافه میشه.
سرعت رو بالا تر نمی بره اما می شه به این وسیله کاری کرد که تمام کنترل های فرم یک مرتبه لود و initialize نشن، بلکه هر بار که روی یه تب کلیک شد کنترلهای اون لود بشن و در حافظه بمونن. به این ترتیب مقداری صفحه در ابتدا سریعتر لود میشه.
البته برای این کار به جز یوزر کنترل از روشهای دیگه ای هم میشه استفاده کرد.