c# - Xamarin 表单按钮点击计数
问题描述
当用户点击主页上的 btnOffline 时,它会将他们重定向到第二页。当用户单击第二页上的按钮完成(button_clicked 事件)时,我将记录时间戳。我现在面临的错误是当它在 button_clicked 事件之后导航回主页时,我再次单击 btnOffline 和 btnDone,lblEndDT 的时间戳发生了变化。我只想从第二页获得第一次点击,但它仍然会改变
主页
public partial class MainPage : ContentPage
{
public string mainpagevalue;
int offlinecount = 0;
int onlinecount = 0;
public MainPage()
{
InitializeComponent();
}
private void btnOffline_Clicked(object sender, EventArgs e)
{
offlinecount++;
txtOfflineStatus.Text = "IN PROGRESS";
Navigation.PushAsync(new SecondPage(this, lblEndDT, txtOfflineStatus, btnOnline, btnMH));
if (offlinecount == 1)
{
string currentDT = DateTime.Now.ToString();
lblStartDT.Text = currentDT;
}
}
第二页
public partial class SecondPage : ContentPage
{
Label MainPagelblEndDT;
MainPage mainPage;
ImageButton myImageBtn;
int btndonecount = 0;
public SecondPage()
{
InitializeComponent();
}
public SecondPage(MainPage mainP,Label lblEndDT)
{
InitializeComponent();
//Get the lblEndDT reference here
MainPagelblEndDT = lblEndDT;
//Get the MainPage reference here
mainPage = mainP;
}
public SecondPage(MainPage mainP, Label lblEndDT, ImageButton imageBtn)
{
InitializeComponent();
//Get the lblEndDT reference here
MainPagelblEndDT = lblEndDT;
//Get the MainPage reference here
mainPage = mainP;
//Get the ImageButton reference here
myImageBtn = imageBtn;
}
private void Button_Clicked(object sender, EventArgs e)
{
btndonecount++;
if(btndonecount == 1)
{
string edt = DateTime.Now.ToString();
MainPagelblEndDT = edt;
mainPage.mainpagevalue = MainPagelblEndDT.Text;
}
Navigation.PopAsync();
}
}
解决方案
当您再次单击时btnOffline
,in 会重置,因此它仍然会更改。btnDone
btndonecount
SecondPage
您应该从 获取点击计数mainPage
,然后将其传递offlinecount
给SecondPage
:
private void btnOffline_Clicked(object sender, EventArgs e)
{
offlinecount++;
txtOfflineStatus.Text = "IN PROGRESS";
Navigation.PushAsync(new SecondPage(this, lblEndDT, txtOfflineStatus, btnOnline, btnMH,offlinecount));
if (offlinecount == 1)
{
string currentDT = DateTime.Now.ToString();
lblStartDT.Text = currentDT;
}
}
在 中SecondPage
,获取clickCount
并删除btndonecount++
:
public SecondPage(MainPage mainP, Label lblEndDT, ImageButton imageBtn, int clickCount)
{
InitializeComponent();
//Get the lblEndDT reference here
MainPagelblEndDT = lblEndDT;
//Get the MainPage reference here
mainPage = mainP;
//Get the ImageButton reference here
myImageBtn = imageBtn;
btndonecount = clickCount;
}
private void Button_Clicked(object sender, EventArgs e)
{
if (btndonecount == 1)
{
string edt = DateTime.Now.ToString();
MainPagelblEndDT = edt;
mainPage.mainpagevalue = MainPagelblEndDT.Text;
}
Navigation.PopAsync();
}
推荐阅读
- math - 使用 TI-BASIC 的数据周期
- wordpress - Wordpress 服务器向自身发送错误请求并使 apache 崩溃
- regex - Python 正则表达式不返回所有组
- .htaccess - 为什么 %{VARIABLE}e 后面有一个字母“e”
- sql - 如何在 SQL Server 中按日期对记录进行分组
- android - Android setVisibility(View.GONE)错误无法解析符号'GONE'
- sql - 如何比较两个表并找出差异
- amazon-web-services - 使用 DyanmoDB 行级访问控制时如何避免热分区?
- python - 是否可以在 python 中拥有受保护的类变量或方法?
- javascript - 如何在 grecaptcha.execute() 完成执行后调用函数 - 由事件触发?