2016-11-22 79 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