View Full Version : مبتدی: مشکل با ValueChanged و TextChanged
kolibri
پنج شنبه 14 خرداد 1394, 16:15 عصر
سلام.
دارم برای ویندوزفون برنامه می نویسم.
وقتی می خواهم با ValueChanged یک اسلایدر مقداری رو در یک متغیر بریزم پیغام زیر رو بهم میده:
private void sldTi_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
lbltimer.Text = Convert.ToString(sldTi.Value);
}
Error:
131941
غیر از این برای هر کدی که می خوام بنوسم که مثلا با تغییر مقداری در تکست باکس کاری انجام دهد باز همین پیغام رو میگیرم.
لطفا راهنمایی بفرمایید.
winner1
پنج شنبه 14 خرداد 1394, 16:21 عصر
ولیو مقدار داره؟ ظاهر ناله واسه همین exception میده
kolibri
پنج شنبه 14 خرداد 1394, 16:28 عصر
ولیو مقدار داره؟ ظاهر ناله واسه همین exception میده
بله مقدار داره!
اسلاید بدون مقدار نمیشه! یا 0 هست یا اعداد بزرگتر. من در خصوصیتها مقدار پیشفرض رو هم روی 30 قرار داده ام.
این خطا رو برای کد تغییر متن هم بهم میده. مثلا اگر تکست داخل نکست باکسم تغییر کند لیبل 1 هم تغییر کند همین پیغام رو دریافت می کنم.
kolibri
پنج شنبه 14 خرداد 1394, 17:36 عصر
خب مشکلم حل شد.
کافیه از کد زیر استفاده کنید:
private void sldTi_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
double i;
if (sldTi != null)
{
i = (double)sldTi.Value;
lbltimer.Text = Convert.ToString(i);
}
}
ramtinak
یک شنبه 17 خرداد 1394, 15:52 عصر
نیازی به این کار نبود، همون شرطی که گذاشتی کافی بود. تابع ToString رو همه ی شی ها دارن و نیازی به استفاده Convert.ToString نبود.
if (sldTi != null)
lbltimer.Text = sldTi.Value.ToString();
دلیله خطا هم اینه که هنوز کنترل های صفحه موردنظرت Intialize نشده برای همین هم کدی که نوشتی باعث Exception میشه.
kolibri
شنبه 23 خرداد 1394, 13:20 عصر
نیازی به این کار نبود، همون شرطی که گذاشتی کافی بود. تابع ToString رو همه ی شی ها دارن و نیازی به استفاده Convert.ToString نبود.
if (sldTi != null)
lbltimer.Text = sldTi.Value.ToString();
دلیله خطا هم اینه که هنوز کنترل های صفحه موردنظرت Intialize نشده برای همین هم کدی که نوشتی باعث Exception میشه.
چنین دستوری هم باز ارور دریافت کردم!
آخرش باید متغیر رو در داخل خود بدنه if تعریف می کردم که حل شد.
در مورد خط آخر ممنون میشم بیشتر توضیح بدید.
با تشکر
ramtinak
یک شنبه 24 خرداد 1394, 23:52 عصر
منظورتون از خط آخر چیه؟ کلا دو خط من نوشتم، اگه منظورت اینه:
lbltimer.Text = sldTi.Value.ToString();
که میاد مقدار فعلیه اسلایدرت که از نوع double هست رو به رشته یا string تبدیل میکنه. همونطور که بالا هم گفتم تمامی شی های سی شارپ این کد رو دارن.
فکر کنم شما سیلورلایت کار میکنید.
اگه ویندوزفون نسخه Universal یا WinRT میخواهید انجام بدید، توی کتاب برنامه نویسی ویندوزفون 8.1 که ساختم، یک درسی داره که آموزش پلیر ساختن رو داره که با استفاده از اسلایدر و ProgressBar کارها رو پیش میبرم( البته ناگفته نمونه که Gesture برای عقب جلو کردن فیلم با کشیدن انگشت روی صفحه یا تنظیم صدا با پایین بالا کردن با کشیدن انگشت روی صفحه و پایین بالا کردن برای تنظیم روشنایی هم در این درس آموزش داده میشه)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.