2016-11-22 34 views
-1

因此,我試圖讓一個應用程序來計算出生以來的日子,我必須使用日期選擇器來輸入生日。我的問題是,它口口聲聲說「未分配的局部變量的使用‘DATEPICKER1’ 誰能告訴我什麼,我做錯了什麼?C#錯誤:使用未分配的本地變量'datePicker1'

 base.OnCreate(bundle); 

     SetContentView(Resource.Layout.Main); 

     DateTime datePicker1 = datePicker1.Date;<--- This is where it says that it's wrong 
     DateTime localDate = DateTime.Now; 
     TimeSpan Days = (localDate - datePicker1); 
     var button1 = FindViewById<Button>(Resource.Id.button1); 
     var textView1 = FindViewById<TextView>(Resource.Id.textView1); 

     button1.Click += (e, o) => 

     { 

      textView1.Text = "you are living for " + Days + " days"; 

     }; 




    } 
} 

}

+5

嗯,是的 - 你試圖聲明一個名爲'datePicker1'的局部變量並使用它自己初始化它。也許你的意思是'DateTime date = datePicker1.Date;'用字段來代替? –

+0

我試圖做到這一點,但它沒有奏效。它現在說:datePicker1在當前上下文中不存在 –

+0

那麼你有*日期選擇器?也許你應該使用'FindViewById'來獲取日期選擇器? –

回答

1

您正在使用DateTime和DatePicker的

相同標識符

改變這一行

DateTime datePicker1 = datePicker1.Date; 

DateTime datePicker1_Value = datePicker1.Date; 

並更改該

TimeSpan Days = (localDate - datePicker1); 

TimeSpan Days = (localDate - datePicker1_Value); 

您可以使用其他名稱代替 「datePicker1_Value」,唯一的一點是,標識符必須不同於「datePicker1」

0

我假設你的XAML在這裏是正確的。

您需要在DatePicker上有一個事件處理程序。如果有人改變了價值,那麼只有你可能想要計算。

例如

private void DatePicker_SelectedDateChanged(object sender, 
     SelectionChangedEventArgs e) 
    { 

     var picker = sender as DatePicker; 


    (picker.SelectedDate?? DateTime.Now - DateTime.Now).TotalDays 

希望它有幫助!

+0

還有兩個問題: 答案中的那些問號是什麼意思,我應該在哪裏放置代碼? –

+0

@ F.W。由於我沒有安裝Xamrin,因此無法提供確切的代碼。是C#6功能,您不必使用它,您可以只檢查是否爲null。你需要在XAML中引入一個事件<... x:Name =「fromDatePicker」DateSelected =「OnDateSelected」/> – codebased

+0

@codebased n事實上,在這種情況下你不應該使用'??' 2調用'DateTime.Now',並導致差異的值較小而不是0。 – Phil1970

相關問題