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

نام تاپیک: تغییر خصوصیات اجزای یوزرکنترل در فرم پرنت

  1. #1

    تغییر خصوصیات اجزای یوزرکنترل در فرم پرنت

    یک یوزر کنترل معمولی که یک button داخل اون قرار داده شده
    و بوسیله propertie این کلید در فرم اصلی قابل دسترس هست.
    مشکلم از اینجا شروع میشه که:
    این یوزرکنترل به فرمم اضافه کردم. تو حالت دیزاین به اون کلیدی که داخل یوزرکنترلم وجودداره دسترسی دارم. مقدار Text اونو عوض میکنم و نشونم میده که عوض شده. اما وقتی اجرا میکنم دوباره به حالت اول برمیگرده.
    راه حلش چیه؟!

  2. #2
    کاربر دائمی آواتار SMRAH1
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    مشهد
    پست
    884

    نقل قول: تغییر خصوصیات اجزای یوزرکنترل در فرم پرنت

    سلام

    قطعا شما در جایی از برنامه،اقدام به تغییر متن دکمه می کنید.این مکان می تواند Init در UC یا InitalComponnent در فرم یا یک متد یا peoperty (احتمالا Browsable=false) یا حتی در خطوط دیگری از کد است.پیشنهاد من،فقط Debug کردن است تا جای دقیق را بیابید.یک گزینه مناسب ،دریافت رویداد TextChanged دکمه مورد نظر برای دیباگ است.

    در هر حال اگر نمونه ای از کد را قرار دهید،بهتر می توان اظهار نظر کرد.

  3. #3

    نقل قول: تغییر خصوصیات اجزای یوزرکنترل در فرم پرنت

    هیچ کجای برنامه با کد کاری انجام نمیدم. مشکلم اینجاست که وقتی درحالت دیزاین مقدار تکست عوض میکنم. این مقدار جدید تو فرم برای کلید نمایش داده میشه. ولی وقتی F6 میزنم باز به حالت اول برمیگرده. یعنی هیچکجا این مقدار جدید نوشته نمیشه.
    پروژه ی زیر باز کنید و کاری کنید که تو حالت دیزاین بشه تکست button عوض کرد.
    فایل های ضمیمه فایل های ضمیمه

  4. #4
    کاربر دائمی آواتار SMRAH1
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    مشهد
    پست
    884

    نقل قول: تغییر خصوصیات اجزای یوزرکنترل در فرم پرنت

    سلام

    1) پیشنهاد می کنم ،به جای در دسترس گذاشتن کل شی Button درون UserControl،فقط خاصیت هایی که لازم داریم را Public کنید (این با اصول برنامه نویسی OO هماهنگ تر است).برای نمونه خصوصیت ButtonText را معرفی و با آن Button.Text را مقدار دهی کنید.

    2) برای رفع مشکل فعلی شما کافیست صفت DesignerSerializationVisibility از property Button را برابر Content قرار دهیم.به عبارت دیگر خط زیر را قبل از خصوصیت مذکور بیافزایید:
    [DesignerSerializationVisibility(DesignerSerializat  ionVisibility.Content)]
    در واقع کد شما در فایل UserControl.CS به شکل زیر در خواهد آمد:

    public UserControl1()
    {
    InitializeComponent();
    }

    [DesignerSerializationVisibility(DesignerSerializat ionVisibility.Content)]
    public Button Button
    {
    get { return button1; }
    set { button1 = value; }
    }
    با تنظیم این صفت،به Designer رسما اعلام می کنید که تغییرات انجام شده در این property را به هر شکل که لازم است، ذخیره کند (در InitComponent).امیدوارم اگر اشتباهی در رساندن منظور (یا کژ فهمی من) در رابطه با این صفت است،دوستان یادآوری کنند.

    موفق باشید

  5. #5

    نقل قول: تغییر خصوصیات اجزای یوزرکنترل در فرم پرنت

    1) پیشنهاد می کنم ،به جای در دسترس گذاشتن کل شی Button درون UserControl،فقط خاصیت هایی که لازم داریم را Public کنید (این با اصول برنامه نویسی OO هماهنگ تر است).برای نمونه خصوصیت ButtonText را معرفی و با آن Button.Text را مقدار دهی کنید.
    استفاده از کلید فقط یک مثال بود و برای حالتی که میخوام استفاده کنم باید تمام خصوصیات هارو به اشتراک بگذارم.
    2) برای رفع مشکل فعلی شما کافیست صفت DesignerSerializationVisibility از property Button را برابر Content قرار دهیم.به عبارت دیگر خط زیر را قبل از خصوصیت مذکور بیافزایید:
    بسیار عالی بود و ممنون.
    با اطلاعات ناقصی که من دارم میدونم که برای کار درحالت دیزاین باید آبجکتها سریالایز بشن و با این دستور به دیباگر میگیم که چه قسمتی برای سریالایز استفاده بشه. (احتمال داره کاملا اشتباه گفته باشم)

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

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