chemobrain
chemobrain

Reputation: 7

How do i make a label not visible after 15 seconds I triggered a button?

I Don't know what to use a timer or an if statements. how to trigger it? then let the other label show up?

namespace Labeltimer
{

public partial class MainPage : ContentPage
{

    public MainPage()
    {
        InitializeComponent();
        MyImage.Source = ImageSource.FromFile("logo.png");

    }

    void TButton_Clicked(object sender, System.EventArgs e)
    {

        T1Text.IsVisible = true;

        //T2Text.IsVisible = true;

    }

}
}

Upvotes: 0

Views: 359

Answers (4)

user6021938
user6021938

Reputation:

public class StateToVisibilityConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, 
                System.Globalization.CultureInfo culture)
        {
            if (value is State)
            {
                State state = (State)value;
                switch (state)
                {
                    case State.Away:
                    case State.Gone:
                        return Visibility.Visible;
                    default:
                        return Visibility.Collapsed;
                }
            }
        }
        enter code here
        public object ConvertBack(object value, Type targetType, object parameter, 
                System.Globalization.CultureInfo culture)
        {
            return State.None; // your default state
        }
    }

Upvotes: 0

bhavya joshi
bhavya joshi

Reputation: 1136

The way i do it,just add StartTimer inside that method,it will get call after 15 seconds:

 Device.StartTimer(TimeSpan.FromSeconds(15), () =>
        {
            T1Text.IsVisible = false;
            return false;
        });

return false if you want this to happen only once(like SetTimeout of JS),else return true(like SetInterval of JS) if you want it to happen every 15 seconds.

Upvotes: 0

Jessie Zhang -MSFT
Jessie Zhang -MSFT

Reputation: 13803

There are many methods you can choose, for example:

1.System.Timers.Timer

private  void TButton_Clicked(object sender, EventArgs e)
    {
        System.Timers.Timer t = new System.Timers.Timer(15000);   // intial class Timer,set internal 15000ms;   
        t.Elapsed += new System.Timers.ElapsedEventHandler(doSometing2); //Execute events at time of arrival; 
        t.AutoReset = false;   //Set to execute (false) once and execute (true) all the time   
        t.Enabled = true;
    }

method doSometing2

private void doSometing2(object sender, ElapsedEventArgs e)
    {
        Device.BeginInvokeOnMainThread(() =>
        {
            mLabel.IsVisible = false;
        });
    }

2. Device.StartTimer

 private  void TButton_Clicked(object sender, EventArgs e)
    {
        Device.StartTimer(TimeSpan.FromSeconds(15), doSometing);
    }

method doSometing

private bool doSometing()
    {
        Device.BeginInvokeOnMainThread(() =>
        {
            mLabel.IsVisible = false;
        });
        return true;
    }

3. Thread.Sleep

private  void TButton_Clicked(object sender, EventArgs e)
    {
        Thread.Sleep(15000);
        mLabel.IsVisible = false;
    }

4. Task.Delay

private async void TButton_Clicked(object sender, EventArgs e)
    {
        await Task.Delay(15000); // 15000ms == 15s
        mLabel.IsVisible = false;
    }

Upvotes: 0

Dustin Catap
Dustin Catap

Reputation: 431

Inside your TButton_Clicked:

async void TButton_Clicked(object sender, System.EventArgs e)
{
    await Task.Delay(15000); // 15000ms == 15s
    T1Text.IsVisible = false;
}

I recommend you read more about asynchronous programming.

Upvotes: 1

Related Questions