Reputation: 7
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
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
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
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
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