我正在制作一个投票应用程序,我希望用户只被允许投票一次/天。我有一个主页,在这个页面上,多个按钮导航到不同的页面(在那里用户可以投票).On投票“页面”我有一个按钮,当按下时,它上传到数据库中的投票,并在它被禁用了一段时间。但是,如果我来回切换(投票页面->主页->投票页面),该按钮将再次启用。我该如何解决这个问题,这样无论我导航到哪里,按钮都将保持禁用状态?我写下了我用来禁用投票页面上按钮的代码,但正如我所说的,每当我离开页面时,按钮将再次启用。
public void ImageButton_Clicked(object sender, EventArgs e)
{
Timer aTimer = new Timer();
myButton.IsEnabled = false;
aTimer.Interval = 5000; //ms
aTimer.Enabled = true;
aTimer.Elapsed += ATimer_Elapsed;
}
public void ATimer_Elapsed(object sender, ElapsedEventArgs e)
{
Device.BeginInvokeOnMainThread(() => { myButton.IsEnabled = true; });
} 按钮的Xaml定义。
<ImageButton
x:Name="myButton"
Clicked="ImageButton_Clicked" >发布于 2020-05-14 09:58:03
我猜你想在使用导航离开页面时存储数据,如果是,我建议你可以使用Xamarin.Essentials: Preferences来保存当前的用户数据。
对于MainPage:
private void btn1_Clicked(object sender, EventArgs e)
{
Navigation.PushAsync(new Page15());
}对于VotePage:
public partial class Page15 : ContentPage
{
public DateTime dt;
public Page15()
{
InitializeComponent();
DateTime currentdate = DateTime.Now;
bool haskey = Preferences.ContainsKey("user1");
if(haskey)
{
string date = Preferences.Get("user1", "");
if (date != null)
{
dt = Convert.ToDateTime(date);
TimeSpan timediff = currentdate - dt;
if(timediff.Seconds<10)
{
btnvote.IsEnabled = false;
}
}
}
}
private void btnvote_Clicked(object sender, EventArgs e)
{
dt = DateTime.Now;
//save count into database or local
btnvote.IsEnabled = false;
}
protected override void OnDisappearing()
{
base.OnDisappearing();
string clickdate = dt.ToString();
Preferences.Set("user1", clickdate);
}
}在我的代码中,我禁用了投票后10秒内的按钮,您可以使用timediff.Days;timediff.Minutes来更改日期时间差。
https://stackoverflow.com/questions/61780168
复制相似问题