C# הגדרת החזרה ב event - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

C# הגדרת החזרה ב event


ori2694

Recommended Posts

אני יודע מה לעשות ועשיתי את זה פשוט יש לי שגיאה בקומפיילר עם משהו שקשור ב System.Windows.RoutedEventArgs

אז חשבתי שאולי יש לי טעות ולא עליתי עליה לכן שאלתי.

במקום ה Void רשמתי double שלפי מה שאני יודע זה מה שצריך.

קישור לתוכן
שתף באתרים אחרים

		private double btn1_Click(object sender, System.Windows.RoutedEventArgs e)
{
double num1=0;
string labels = (string)lblResult.Content;
string buttons = (string)btn1.Content;
lblResult.Content = labels + buttons;
labels = (string)lblResult.Content;
num1=double.Parse(labels);
return num1;
}

והשגיאה:

'double.CalculatorWPF.MainWindow.btn1_Click(object,System.Windows.RoutedEventArgs)' has the wrong return type

קישור לתוכן
שתף באתרים אחרים

אז זו לא סתם פונקציה, זה event, ואתה לא יכול לשנות את ערך ההחזרה שלה כרצונך.

אם אתה רוצה לעשות משהו עם num1 הזה, אז שמור אותו איפשהו ותאפשר גישה אליו.

נ.ב. ערוך את הכותרת למשהו יותר אינפורמטיבי.

קישור לתוכן
שתף באתרים אחרים

אולי, אם תאמר מה אתה רוצה לעשות בדיוק.

מה שאני רוצה לעשות זה משהו די פשוט, אני רוצה לעשות מחשבון (השתמשתי ב WPF).

ואז, למשל כשלוחצים על +, אני רוצה לשמור את ה + במשתנה מסוג char וכשמכניסים את המספר השני ולוחצים על = אני רוצה למסור לו את ה char כדי שידע מה לעשות.(זה לא הקוד שהעתקתי לך,החלטתי לשנות אותו).

קישור לתוכן
שתף באתרים אחרים

תכתוב פונקציה נפרדת שעושה את מה שאתה רוצה, ורק תקרא לה באמצעות ה event של הכפתור.

בנוסף, בלי שום קשר, עדיף שתשתמש ב

()lblResult.Content.toString

במקום להשתמש ב cast

וגם עדיף(תלוי במקרה) שתשתמש ב

()Convert.toInt32

במקום ה Parse שלא מטפל ב null

קישור לתוכן
שתף באתרים אחרים

אם אתה משתמש ב WPF תיצור DependencyProperty ותשמור בו את התוצאה של החישוב,

ב XAML תעשה Binding למשתנה הזה.

כשלוחצים על =, תעשה את החישוב ותעדכן את המשנה. בגלל שיש binding התצוגה תתעדכן.

קישור לתוכן
שתף באתרים אחרים

תכתוב פונקציה נפרדת שעושה את מה שאתה רוצה, ורק תקרא לה באמצעות ה event של הכפתור.

בנוסף, בלי שום קשר, עדיף שתשתמש בבמקום להשתמש ב cast

וגם עדיף(תלוי במקרה) שתשתמש בבמקום ה Parse שלא מטפל ב null

ניסיתי לכתוב פונקציה נפרדת ולזמן אותה ב event אבל זה רושם לי את אותה הבעיה.

והעניין של ה double אני לא חושב שזה כל כך משנה כי אין אפשרות של null.

המשתמש לא מכניס את הטקסט אלא לוחץ על כפתורי המספרים.

קישור לתוכן
שתף באתרים אחרים

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

Convert.toDouble

בנוגע לבעיה שלך, קשה לעזור בלי לראות את הקוד המעודכן.

קישור לתוכן
שתף באתרים אחרים

אם אתה משתמש ב WPF תיצור DependencyProperty ותשמור בו את התוצאה של החישוב,

ב XAML תעשה Binding למשתנה הזה.

כשלוחצים על =, תעשה את החישוב ותעדכן את המשנה. בגלל שיש binding התצוגה תתעדכן.

איך אני יוצר DependencyProperty

קישור לתוכן
שתף באתרים אחרים

מומלץ לקרוא את ההסבר של מיקרוסופט על מנגנון ה Dependency Properties:

http://msdn.microsoft.com/en-us/library/ms752914.aspx

יצירה של properties נעשת בצורה הבאה:

public static readonly DependencyProperty IsSpinningProperty = 
DependencyProperty.Register(
"IsSpinning", typeof(Boolean),

);
public bool IsSpinning
{
get { return (bool)GetValue(IsSpinningProperty); }
set { SetValue(IsSpinningProperty, value); }
}

כמובן שאפשר להכריז על Dependency properties רק במחלקות שיורשות מ DependencyObject.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...