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

نام تاپیک: دیر لود شدن فرم

  1. #1

    دیر لود شدن فرم

    با سلام
    من بعضی فرمهایی که طراحی کردم هنگام اجرا به کندی لود می شود. از چند tablelayout در فرم استفاده کردم. میخواستم ببینم برای بالا رفتن سرعت لود فرم چه راهکارهایی وجود دارد؟

  2. #2
    مدیر بخش آواتار danialafshari
    تاریخ عضویت
    تیر 1387
    محل زندگی
    هر کجا هستم باشم آسمان مال من است
    پست
    2,909

    نقل قول: دیر لود شدن فرم

    با سلام
    tablelayout بخاطر autosize ی که روی آبجکت های درونش انجام میشه کمی سرعت و کند می کنه ولی آنقدر نیست که اذیت کند مشکلتون بیشتر object هایی و کدهایی است که در هنگام load وارد کردید
    به هر حال روش زیر کمک کنندس
    در فرم خاصیت DoubleBuffered رو برابر True قرار بدید
    و این کد رو هم هم طبق فرم برنامتون بزارید

    public static void SetDoubleBuffered(System.Windows.Forms.Control c)
    {
    if (System.Windows.Forms.SystemInformation.TerminalSe rverSession)
    return;
    System.Reflection.PropertyInfo aProp = typeof(System.Windows.Forms.Control).GetProperty(" DoubleBuffered",
    System.Reflection.BindingFlags.NonPublic |
    System.Reflection.BindingFlags.Instance);
    aProp.SetValue(c, true, null);
    }
    protected override CreateParams CreateParams
    {
    get
    {
    CreateParams cp = base.CreateParams;
    cp.ExStyle |= 0x02000000;
    return cp;
    }
    }

    private void Form1_Load(object sender, EventArgs e)
    {
    SetDoubleBuffered(tableLayoutPanel1);
    }

    موفق باشید
    لطفاً از پرسیدن سوال در خصوصی خودداری کنید.
    قبل از ایجاد تاپیک، حتماً قوانین سایت را مطالعه فرمایید.
    قوانین پرسش های دانشجویی
    برای درست وارد شدن کد در قالب C#‎‎‎ سایت، ابتدا کد رو درون Notepad.exe کپی سپس از اونجا به سایت در قالب C#‎‎‎ منتفل کنید
    نرم افزار code manager دستیار برنامه نویسان جهت نگهداری کد ها

  3. #3

    نقل قول: دیر لود شدن فرم

    نقل قول نوشته شده توسط danialafshari مشاهده تاپیک
    با سلام
    tablelayout بخاطر autosize ی که روی آبجکت های درونش انجام میشه کمی سرعت و کند می کنه ولی آنقدر نیست که اذیت کند مشکلتون بیشتر object هایی و کدهایی است که در هنگام load وارد کردید
    به هر حال روش زیر کمک کنندس
    در فرم خاصیت DoubleBuffered رو برابر True قرار بدید
    و این کد رو هم هم طبق فرم برنامتون بزارید

    public static void SetDoubleBuffered(System.Windows.Forms.Control c)
    {
    if (System.Windows.Forms.SystemInformation.TerminalSe rverSession)
    return;
    System.Reflection.PropertyInfo aProp = typeof(System.Windows.Forms.Control).GetProperty(" DoubleBuffered",
    System.Reflection.BindingFlags.NonPublic |
    System.Reflection.BindingFlags.Instance);
    aProp.SetValue(c, true, null);
    }
    protected override CreateParams CreateParams
    {
    get
    {
    CreateParams cp = base.CreateParams;
    cp.ExStyle |= 0x02000000;
    return cp;
    }
    }

    private void Form1_Load(object sender, EventArgs e)
    {
    SetDoubleBuffered(tableLayoutPanel1);
    }

    موفق باشید
    میشه در مورد autosize ای که فرمودید tablelayout روی آبجکت های درونش انجام میدهد توضیح بیشتری دهید؟

  4. #4
    مدیر بخش آواتار danialafshari
    تاریخ عضویت
    تیر 1387
    محل زندگی
    هر کجا هستم باشم آسمان مال من است
    پست
    2,909

    نقل قول: دیر لود شدن فرم

    نقل قول نوشته شده توسط m_karimi مشاهده تاپیک
    میشه در مورد autosize ای که فرمودید tablelayout روی آبجکت های درونش انجام میدهد توضیح بیشتری دهید؟
    منظورم اینه که وقتی dock ش رو روی Fill قرار بدید با توجه به اندازه فرم سایزش تغییر میکنه
    لطفاً از پرسیدن سوال در خصوصی خودداری کنید.
    قبل از ایجاد تاپیک، حتماً قوانین سایت را مطالعه فرمایید.
    قوانین پرسش های دانشجویی
    برای درست وارد شدن کد در قالب C#‎‎‎ سایت، ابتدا کد رو درون Notepad.exe کپی سپس از اونجا به سایت در قالب C#‎‎‎ منتفل کنید
    نرم افزار code manager دستیار برنامه نویسان جهت نگهداری کد ها

  5. #5

    نقل قول: دیر لود شدن فرم

    با تشکر از پاسخ بسیار خوبتان. فرمها به سرعت لود می شوند. من فقط برای کنترلهای tablelayout گذاشتم. ولی یه مشکلی که به وجود امد دکمه های برنامه ام وقتی با موس می روم روی انها با تاخیر کلیک می شود. یعنی یک مقدار موس را باید روی کنترل نگه دارم تا عمل کند. مشکل بعدی این است که وقتی فرم لود میشود یه لحظه اول کل صفحه به مدت یک ثانیه مشکی می شود بعد فرم بالا می اید.
    آخرین ویرایش به وسیله m_karimi : شنبه 06 آبان 1396 در 01:27 صبح

  6. #6
    مدیر بخش آواتار danialafshari
    تاریخ عضویت
    تیر 1387
    محل زندگی
    هر کجا هستم باشم آسمان مال من است
    پست
    2,909

    نقل قول: دیر لود شدن فرم

    با سلام
    بدون بررسی کردن پروژه بیشتر از این نمیشه راهنمایی کرد
    یک توصیه دیگه اینه که یک خروجی بگیرید و پوشه Debug رو روی یک سیستم دیگه تست کنید
    یک نمونه اینجا بزارید تا بهتر بشه بررسی کرد
    موفق باشید
    لطفاً از پرسیدن سوال در خصوصی خودداری کنید.
    قبل از ایجاد تاپیک، حتماً قوانین سایت را مطالعه فرمایید.
    قوانین پرسش های دانشجویی
    برای درست وارد شدن کد در قالب C#‎‎‎ سایت، ابتدا کد رو درون Notepad.exe کپی سپس از اونجا به سایت در قالب C#‎‎‎ منتفل کنید
    نرم افزار code manager دستیار برنامه نویسان جهت نگهداری کد ها

  7. #7

    نقل قول: دیر لود شدن فرم

    نقل قول نوشته شده توسط danialafshari مشاهده تاپیک
    با سلام
    بدون بررسی کردن پروژه بیشتر از این نمیشه راهنمایی کرد
    یک توصیه دیگه اینه که یک خروجی بگیرید و پوشه Debug رو روی یک سیستم دیگه تست کنید
    یک نمونه اینجا بزارید تا بهتر بشه بررسی کرد
    موفق باشید
    این قطعه را حذف کردم مشکل سیاهی برطرف شد ولی وقتی آن کد بود سرعت خیلی بهتر و بالاتر بود ولی مشکل سیاهی داشت
    protected override CreateParams CreateParams
    {
    get
    {
    CreateParams cp = base.CreateParams;
    cp.ExStyle |= 0x02000000;
    return cp;
    }
    }

    این cp.ExStyle دیگر مقادیر آن چیست. نمیشه مقدارهای دیگه داد به ان؟

    لینک زیر هم همین مشکل من رو داشتند
    http://www.c-sharpcorner.com/forums/...r-on-form-load
    آخرین ویرایش به وسیله m_karimi : یک شنبه 07 آبان 1396 در 00:52 صبح

  8. #8
    مدیر بخش آواتار danialafshari
    تاریخ عضویت
    تیر 1387
    محل زندگی
    هر کجا هستم باشم آسمان مال من است
    پست
    2,909

    نقل قول: دیر لود شدن فرم

    با سلام
    این دفعه DoubleBuffered فرم رو روی False قرار بدید
    در فضای General (بالای فرم):

    int intOriginalExStyle = -1;
    bool bEnableAntiFlicker = true;

    سازنده(Constructor) رو بشکل زیر تغییر بدید:

    public Form1()
    {
    ToggleAntiFlicker(false);
    InitializeComponent();
    this.ResizeBegin += new EventHandler(Form1_ResizeBegin);
    this.ResizeEnd += new EventHandler(Form1_ResizeEnd);
    }

    این متدها رو اضافه کنید:

    private void ToggleAntiFlicker(bool Enable)
    {
    bEnableAntiFlicker = Enable;
    this.MaximizeBox = true;
    }
    protected override CreateParams CreateParams
    {
    get
    {
    if (intOriginalExStyle == -1)
    {
    intOriginalExStyle = base.CreateParams.ExStyle;
    }
    CreateParams cp = base.CreateParams;

    if (bEnableAntiFlicker)
    {
    cp.ExStyle |= 0x02000000; //WS_EX_COMPOSITED
    }
    else
    {
    cp.ExStyle = intOriginalExStyle;
    }

    return cp;
    }
    }

    کد زیر رو در اونت ResizeBegin

    ToggleAntiFlicker(true);

    و این رو در ResizeEnd قرار بدید

    ToggleAntiFlicker(true);

    باز هم میگم بیشتر ممکنه مربوط به کدهای Load تون باشه
    موفق باشید
    لطفاً از پرسیدن سوال در خصوصی خودداری کنید.
    قبل از ایجاد تاپیک، حتماً قوانین سایت را مطالعه فرمایید.
    قوانین پرسش های دانشجویی
    برای درست وارد شدن کد در قالب C#‎‎‎ سایت، ابتدا کد رو درون Notepad.exe کپی سپس از اونجا به سایت در قالب C#‎‎‎ منتفل کنید
    نرم افزار code manager دستیار برنامه نویسان جهت نگهداری کد ها

  9. #9

    نقل قول: دیر لود شدن فرم

    نقل قول نوشته شده توسط m_karimi مشاهده تاپیک
    میشه در مورد autosize ای که فرمودید tablelayout روی آبجکت های درونش انجام میدهد توضیح بیشتری دهید؟

    سلام
    فقط کافیه بالای فرم مادر کد زیر را قرار دهیدمشکل کندی سرعت حل خواهد شد

    namespace NameProject
    }
    public partial class FRM_Main : Form
    }
    protectedoverrideCreateParams CreateParams

    }
    get
    }
    ;CreateParams cp = base.CreateParams
    ;cp.ExStyle |= 0x02000000
    ;return cp
    {
    {
    {

  10. #10
    کاربر دائمی آواتار ahmadreza517
    تاریخ عضویت
    مرداد 1390
    محل زندگی
    اینترنت
    پست
    393

    نقل قول: دیر لود شدن فرم

    سلام
    داخل رویداد load کد نوشتید زیاده ؟ اگه اینطوره برای بالا بردن سرعت دستورات داخل load فرم را داخل یک تابع قرار بدین و بصورت نامتقارن در یک thread صداش بزنید.

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

  1. دیر لود شدن فرم
    نوشته شده توسط kiani2012 در بخش C#‎‎
    پاسخ: 0
    آخرین پست: دوشنبه 18 بهمن 1395, 19:10 عصر
  2. سوال: علت دیر لود شدن فرم !
    نوشته شده توسط vB.N3T در بخش WPF
    پاسخ: 4
    آخرین پست: دوشنبه 04 مرداد 1395, 10:20 صبح
  3. سوال: دیر لود شدن فرم با بالا رفتن حجم داده
    نوشته شده توسط s-soleimani در بخش C#‎‎
    پاسخ: 9
    آخرین پست: دوشنبه 16 شهریور 1394, 13:18 عصر
  4. دیر لود شدن فرم در ویندوز 7
    نوشته شده توسط jmfnima در بخش C#‎‎
    پاسخ: 6
    آخرین پست: دوشنبه 08 دی 1393, 23:49 عصر
  5. دیر لود شدن فرم
    نوشته شده توسط mahdishojaee در بخش C#‎‎
    پاسخ: 3
    آخرین پست: دوشنبه 06 اسفند 1386, 14:13 عصر

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

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