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

نام تاپیک: نمايش فرمهاي برنامه با داشتن اسم آنها

  1. #1

    Question نمايش فرمهاي برنامه با داشتن اسم آنها

    با سلام به همه دوستان
    من يك برنامه (soulotion) با چندين پروژه درون آن دارم. اسم تمامي فرمها در ديتابيس ذخيره شده است. وقتي كاربر
    لاگين مي كند با توجه به دسترسي هاي تعريف شده براي آن، به ازاي هر فرمي كه دسترسي داشته باشد يك دكمه در فرم اصلي برنامه براي اون ايجاد مي شود. حالا مي خواهم كاربر با كليك روي اين دكمه ها فرمهاي مربوط به هركدام را ( كه اسم آن را بصورت استرينگ يا رشته داريم) اجرا كند.
    در اين مورد خيلي جستجو كردم فقط يك راه پيشنهاد شده بود و آن استفاده از Reflection ها بود. ولي از آن چيزي متوجه نشدم.
    لطفا راهنمايي فرماييد.

  2. #2

    نقل قول: نمايش فرمهاي برنامه با داشتن اسم آنها

    به نظرم راه سختی را برای اعمال سطح دسترسی انتخاب کردید.(ذخیره نام فرم های مجاز برای هر شخص اشتباست)
    به جاش اینکه شخص میتونه به اون فرم دسترسی داشته باشه یا نه رو باید ذخیره کرد:

    راه اول: کافیست در دیتابیس در جدولی که برای سطوح دسترسی درنظر گرفتید به ازای هر فرم و منو و.... که میخواهید محدودیت قائل بشید یک فیلد از نوع boolean در نظر بگیرید و سطح دسترسی را برای هر کاربر تعیین کنید. در قسمت طراحی فرم هم تمام دکمه ها و منوها را طراحی کنید و فقط در هنگام لاگین اگر کاربر مجاز بود اونوقت مقادیر سطح دسترسی را از دیتابیس خوانده و اعمال کنید(باتن ها و منوهایی که نباید دسترسی داشته باشه را مخفی(یا disable) کنید).

    راه دوم: یا اینکه اگر سطوح دسترسی مشخص هست (مثلا مدیر دسترسی کامل ، اپراتور دسترسی محدودتر و ...) کافیه یک فیلد در نظر بگیرید و نوع دسترسی رو برای کاربر ذخیره کنید و موقع لاگین برحسب سطح دسترسی(اینکه چه شخصی لاگین میکنه) برای کنترل ها تصمیم بگیرید.

  3. #3

    نقل قول: نمايش فرمهاي برنامه با داشتن اسم آنها

    ممنون از پاسختون
    تعداد فرم هاي برنامه خيلي زياد هست. كاربر وقتي لاگين ميكنه بر اساس نوع سيستمي كه انتخاب مي كنه زير سيستم هايي كه به آن دسترسي دارد مشخص مي شود. براي اينكار هم از متغير هايي از نوع Bool استفاده كردم. امكان طراحي يك مدل از قبل طراحي شده وجود ندارد بلكه بايد بصورت دايناميك دكمه هاي مورد نظر ساخته شود.
    براي مثال كاربر سيستم انبار را انتخاب مي كند و بايد براي او زيرسيستم هاي ارسال،انبارش و... كه هركدام داراي فرمهاي زيادي است آورده شود.
    قبلا اسم تمامي فرمها در ديتابيس ذخيره شده است. مشكل من فقط نمايش اين فرمها با فرض دانستن اسم آنها در برنامه است.

  4. #4
    کاربر دائمی آواتار nilmil_nil
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    بندر گناوه
    سن
    36
    پست
    598

    نقل قول: نمايش فرمهاي برنامه با داشتن اسم آنها

    من یه راه حل پیشنهاد میکنم
    خودم هم از هیمن راه حل همیشه استفاده میکنم
    توی جدول یوزر ها یه فیلد تعرفی کن از نوع رشته ای
    حالا به ازای هر سطح دسترسی 0 یا 1 رو بذار
    مثلا برای فرم اشخاص:0111
    که به ترتیب اضافه و ویرایش و حذف و نمایش و به همین ترتیب بقیه رو هم کنارش میذاری
    که خودش میشه یه رشته بزرگ مثل 1010111100001111000 حالا کفایه با یه تابع این رشته رو به یه آرایه کاراکتری یا بولین تبدیل کنی و هرکدوم از این صفر و یک ها رو به دکمه یا منو یا هرجای دیگه ای اختصاص بدی
    فقط برای هر کدوم یه کامنت بذار که بدها یادت بمونه
    مزیت این کار اینه که شما هر تعداد دیگه هم بخوای اضافه کنی کافیه فقط به 0و1 ها اضاف کنی
    و کاری به ساختار جدول نداری

  5. #5

    نقل قول: نمايش فرمهاي برنامه با داشتن اسم آنها

    نقل قول نوشته شده توسط a-erfani مشاهده تاپیک
    ممنون از پاسختون
    تعداد فرم هاي برنامه خيلي زياد هست. كاربر وقتي لاگين ميكنه بر اساس نوع سيستمي كه انتخاب مي كنه زير سيستم هايي كه به آن دسترسي دارد مشخص مي شود. براي اينكار هم از متغير هايي از نوع Bool استفاده كردم. امكان طراحي يك مدل از قبل طراحي شده وجود ندارد بلكه بايد بصورت دايناميك دكمه هاي مورد نظر ساخته شود.
    براي مثال كاربر سيستم انبار را انتخاب مي كند و بايد براي او زيرسيستم هاي ارسال،انبارش و... كه هركدام داراي فرمهاي زيادي است آورده شود.
    قبلا اسم تمامي فرمها در ديتابيس ذخيره شده است. مشكل من فقط نمايش اين فرمها با فرض دانستن اسم آنها در برنامه است.
    خوب بالاخره هر زیر سیستم یکسری فرم و باتن و منو و .... داره دیگه که باید نمایش بدید. اول کل باتن ها و منو ها و ... را طراحی کنید و بعد در قسمت لاگین برحسب اینکه چه زیر سیستمی انتخاب میشه کنترلهای غیرلازم را hide کنید(یا اصلا dispose کنید). در هر باتن هم با کد از قبل نوشته شده ، یک فرم را نمایش میدید. توی این راه حل ایجاد محدودیت با hide و show کردن باتن ها و منوها کاملا برطرف میشه و نیازی به ایجاد داینامیک نیست.

  6. #6

    نقل قول: نمايش فرمهاي برنامه با داشتن اسم آنها

    نقل قول نوشته شده توسط a-erfani مشاهده تاپیک
    با سلام به همه دوستان
    من يك برنامه (soulotion) با چندين پروژه درون آن دارم. اسم تمامي فرمها در ديتابيس ذخيره شده است. وقتي كاربر
    لاگين مي كند با توجه به دسترسي هاي تعريف شده براي آن، به ازاي هر فرمي كه دسترسي داشته باشد يك دكمه در فرم اصلي برنامه براي اون ايجاد مي شود. حالا مي خواهم كاربر با كليك روي اين دكمه ها فرمهاي مربوط به هركدام را ( كه اسم آن را بصورت استرينگ يا رشته داريم) اجرا كند.
    در اين مورد خيلي جستجو كردم فقط يك راه پيشنهاد شده بود و آن استفاده از Reflection ها بود. ولي از آن چيزي متوجه نشدم.
    لطفا راهنمايي فرماييد.
    سلام مجدد
    كسي از دوستان در زمينه Reflection مي تواند كمي كند؟

  7. #7

    نقل قول: نمايش فرمهاي برنامه با داشتن اسم آنها

    كسي از دوستان در زمينه Reflection مي تواند كمي كند؟
    اگه همه فرمها توی یک اسمبلی باشه
    Assembly assem = Assembly.GetEntryAssembly();
    object forms = assem.CreateInstance("WindowsFormsApplication1.For m1");
    if (forms != null)
    ((Form)forms).Show();

  8. #8

    نقل قول: نمايش فرمهاي برنامه با داشتن اسم آنها

    نقل قول نوشته شده توسط Reza_Yarahmadi مشاهده تاپیک
    اگه همه فرمها توی یک اسمبلی باشه
    Assembly assem = Assembly.GetEntryAssembly();
    object forms = assem.CreateInstance("WindowsFormsApplication1.For m1");
    if (forms != null)
    ((Form)forms).Show();
    خيلي ممنون از پاسختون
    ولي من در برنامه ام چندين پروژه دارم. وقتي كد شما را استفاده مي كنم فقط براي پروژه اصلي جواب مي دهد و براي بقيه پروژه ها مقدار forms برابر null مي شود.
    لطفا راهنمايي نماييد.

  9. #9

    نقل قول: نمايش فرمهاي برنامه با داشتن اسم آنها

    با سلام
    كسي نبود راهنمايي كند؟

  10. #10

    Lightbulb نقل قول: نمايش فرمهاي برنامه با داشتن اسم آنها

    با سلام به همه دوستان
    بالاخره مشكل با اين كد حل شد.
    string formName = "namespace.Form1";            
    var asm = Assembly.Load("namespace");
    Type formType = asm.GetType(formName);
    Form f = (Form)Activator.CreateInstance(formType);
    f.Show();

    از همه بخاطر توجه و پاسخهايشان متشكرم.

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

  1. حرفه ای: نمايش دادن تمام فرم هاي پرو‍ژه بدون داشتن نام آنها
    نوشته شده توسط milad.biroonvand در بخش VB.NET
    پاسخ: 2
    آخرین پست: سه شنبه 22 دی 1388, 07:51 صبح
  2. عدم نمايش صفحات برنامه
    نوشته شده توسط r_mehrizi در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: سه شنبه 26 خرداد 1388, 14:37 عصر
  3. سوال: run کردن برنامه و داشتن یک مشکل
    نوشته شده توسط saeed_p در بخش C#‎‎
    پاسخ: 1
    آخرین پست: دوشنبه 04 شهریور 1387, 17:16 عصر
  4. سوال: Run کردن برنامه و داشتن یک مشکل
    نوشته شده توسط saeed_p در بخش برنامه نویسی مبتنی بر Microsoft .Net Framework
    پاسخ: 0
    آخرین پست: دوشنبه 04 شهریور 1387, 16:50 عصر
  5. سوال: ذخیره تنظيمات فرمهاي برنامه
    نوشته شده توسط parnia_mb در بخش C#‎‎
    پاسخ: 10
    آخرین پست: سه شنبه 08 مرداد 1387, 00:46 صبح

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

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

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