עברית

  • פותח הנושא viby
  • פורסם בתאריך

viby

New member
user control

שלום הגדרתי user control שמשתמש ב db שנמצא ב solution. כאשר אני מנסה לגרור אותו לאחד ה form-ים מופיעה הודעת exception (ואנחנו מדברים על design time ולא run time) הבאה: an exception occurred while trying to create an instance of project1.usercontrol1.the exception was "the type initializer for "project1.db" threw an exception project1.db זה הקלאס שמחזיק את ה db ואת כל המשאבים הקשורים אליו. למישהו יש מושג מה הבעיה?? תודה
 

viby

New member
האמת שזו ...

קצת בעיה, כי יש אלפי שורות קוד,אבל אולי יש איזו בעיה עקרונית בנושא שמישהו מכיר .אגב הקלאס שמחזיק את ה db הוא סטטי וכך גם הc'tor (שהם אוהבים לקרוא לו גם type initializer -שזה מה שמופיע ב exception). אם לא תהיה ברירה אני אנסה ליצור פרוייקט מצומצם ולהעלות אותו תודה
 

gilad g

New member
אה, נו ברור ../images/Emo13.gif

הקלאס הוא סטטי, ולכן אתה לא יכול ליצור מופע שלו. כשאתה גורר אותו ל-form שלך, הIDE מנסה ליצור instance שלו, אבל הוא לא מצליח כי המחלקה היא סטטית
 

viby

New member
אני לא מנסה...

להגדיר מופע אלא להשתמש במתודות והמשתנים הסטטיים של הקלאס. אתה אומר שבכל זאת הוא מנסה להגדיר מופע?למה הוא עושה את זה ואיך מתגברים על זה?(להפוך את הקלאס ללא סטטי זה לא משהו כי אין כוונה להגדיר מופע שלו באף מקום) תודה
 

gilad g

New member
אם אתה רוצה להשתמש במתודות

של הקלאס, למה אתה גורר אותו לטופס שלך
למה שלא פשוט... פשוט... תשתמש בהם?
int x = MyStaticClass.MyStaticMethod();​
 

yuval k

New member
../images/Emo45.gif

כשאתה גורר אובייקט על הטופס שלך, אז בעצם הוא מנסה ליצור instance שלו, ואם הוא קלאס סטאטי זה בלתי אפשרי
 

kozkoz

New member
אני חושב שלא הובנתי....

אני גורר user control לטופס. ה User control משתמש במתודות סטטיות של הקלאס הסטטי db. עד כאן לא אמורה להיות בעיה. אבל יש. כשאני גורר את ה user control מה toolbox לטופס מופיע ה exception שציטטתי למעלה.
 

viby

New member
אה,התכוונת

ל c'tor של ה user control?! חשבתי של הקלאס. ה c'tor של ה user control לא סטטי כמובן ואין ממנו הפעלה של מתודות סטטיות , אבל יש בהגדרה של data members, כלומר ב user control אני מגדיר data members שהערך שלהם הוא הערך שמתודה סטטית (מהקלאס db) מחזירה.
 

gilad g

New member
אתה יכול להראות לנו קצת קוד?

זה כמו לעבוד "על עיוור", אתה מבין...
 

viby

New member
אוקיי, זה

קוד ארוך אבל זה העיקרון: בתחילת ה user control מופיעות ההגדרות הבאות -
Dim dsObject As dataset1 = db.Mydataset() Dim MyAdapter1 As System.Data.OleDb.OleDbDataAdapter =db.MyDbAdapter()​
אני חושב שאין עוד קוד רלוונטי כי גם על form ריק הבעיה מופיעה וה c'tor של הקלאס db הוא סטטי ובו רק הפעלה של מתודות סטטיות אחרות של הקלאס db שמאתחלות את ה adapter-ים והקשר ל database. שוב, ה exception שציינתי בהודעה הראשונה מופיע כאשר אני מנסה לגרור את ה user control מה tool box ל form , כלומר ב design time. אם אני מדביק את התוכן של ה user control על הטופס, הוא רץ בלי בעיה, כלומר הבעיה היא במעבר ל user control. אני מקווה שזה קצת יותר ברור עכשיו תודה
 

gilad g

New member
תראה לי בבקשה את המתודות הבאות:

db.Mydataset() db.MyDbAdapter()​
 

viby

New member
הן לא מתודות, הן

properties. mydataset מחזיר את ה dataset שמוגדר ב db כ private shared והוא נוצר כ-xsd, כלומר הקוד מחולל. mydbadapter מחזיר adapter שמוגדר גם הוא ב db כ private shared והוא כמובן לא קלאס שלי אלא System.Data.OleDb.OleDbDataAdapter.
 

gilad g

New member
... וגם את הקוד עצמו

כלומר, את הקוד שבתוך ההגדרה של הפרופרטיז.
 

viby

New member
....

Public Shared ReadOnly Property MyDbAdapter() As OleDbDataAdapter Get Return db_Adapter End Get End Property Public Shared ReadOnly Property Mydataset() As dataset1 Get Return db_dataset End Get End Property​
db_dataset ו - db_Adapter הם ה dataset וה - adapter שמוגדרים בקלאס db:
Private Shared db_dataset As dataset1 Private Shared db_Adapter As OleDbDataAdapter​
 

viby

New member
עברית

ניסיתי
Encoding myHebEnc = Encoding.GetEncoding(1255);​
כדי להעביר נתונים בערית ממערך בתים לסטרינג אבל עדיין כשהטקסט בעברית מופיעים רק סימני שאלה. מישהו יודע למה?אולי לעברית יש עוד ערך חוץ מ 1255? תודה
 
למעלה