Xamarin формы Количество нажатий кнопок - PullRequest
0 голосов
/ 13 марта 2020

Когда пользователь нажимает 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();
   }
}

1 Ответ

0 голосов
/ 13 марта 2020

При повторном нажатии btnOffline и 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();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...