Text ירוש מ Control ו Designer

Text ירוש מ Control ו Designer

קודם כל שלום לכולם אחרי חודשיים של היעדרות! ולשאלה: איך גורמים לDesigner "לזכור" ערך של Property מסויים בקובץ Designer? לדוגמא, ב UserControl, אם אני רוצה שהשדה Text יהיה זמין בDesignTime, לא מספיק לי להוסיף <Browsable(True)> כי אז עדיין אם אני יעשה Rebuild Solution הוא יאפס את הערך של השדה במקום לשמור אותו הקובץ Designer. מה עושים?
 

EdotK

New member
ממש לא הבנתי את השאלה שלך...

אתה רוצה שלProperty מסויים יהיה ערך ברירת מחדל? או שזה בכלל לא שומר לך ערכים שאתה מכניס? ולמה אתה משתמש ב <Browsable(True)> ?כל public property של usercontrol מופיע אוטומאטית בDesigner...
 

EdotK

New member
אוקי, עכשיו הבנתי למה אתה מתכוון

מה עם לנסות לעטוף את הProperty Text ב Property משלך? הוא לא שומר לך ערכים בDesigner? אז למעשה הוא לא שומר לך את הערכים בקוד הASPX?
 
מדובר בWinApp

אני כתבתי ככה:
<Browsable(True)> _ Public Overrides Property Text() As String Get Return MyBase.Text End Get Set(ByVal value As String) MyBase.Text = value Redraw() End Set End Property​
בReflector ראיתי שלמשל במחלקה Label (שכמובן גם יורשת מControl) זה מנוסח ככה:
<Editor("System.ComponentModel.Design.MultilineStringEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", GetType(UITypeEditor)), SettingsBindable(True)> _ Public Overrides Property [Text] As String Get Return MyBase.Text End Get Set(ByVal value As String) MyBase.Text = value End Set End Property​
וזה עדיין לא גורם לDesigner לשמור את הערך בין הפעלה להפעלה... למרות שכל Property אחר שאני יוצר נשמר בלי כל התערבות מצידי...
 

EdotK

New member
עדיין, גם אם זה winform

הערך הזה אמור להשמר בקובץ הdesigner.cs של הForm. תפתח את הקובץ הנ"ל, ותראה אם בכלל הוא מבצע את השינוי הזה בפועל. כמו כן, תנסה ליצור אותו באופן ידני ולראות מה קורה. סביר להניח שהקובץ הזה "התחרבש" לך או משהו כזה. אתה יכול לנסות ליצור Form חדש ולהעתיק אליו את כל הפקדים ולנסות שוב.
 

blablaagain

New member
גם לי זה קורה

במספר פקדים שונים שיצרתי, יש לו איזה בעיה דווקא עם TEXT, וזה קורה רק בTEXT ולא בשום property אחר, אם תשנה את השם לTextValue או משהו כזה אז זה יעבוד בסדר
 
שום דבר לא התחרבש, זו תופעה ידועה

השאלה היא, מדוע ולמה? אם אני יוצר Property חדש למשל Title As String, הוא ישמור אותו בקובץ, אבל אם אני מגדיר שדה Overrides Text הוא לא ישמר שם גם אם אני יעשה סלטות באוויר...
 
הקפצה אחרונה

מעניין שאנשים לא נתקלו בזה.. כנראה שלא מי יודע מה אוהבים כאן לכתוב מחלקות GUI... כל אחד שירש מ Control כמעט ודאי נתקל בזה!
 

pun dog

New member
duh...

לכתוב mmi זה אחד הדברים המשעממים.. תכנות בלאי
 
למעלה