時(shí)間控件的更多介紹

2018-08-12 21:55 更新

時(shí)間控件的更多介紹

在前面我們走馬觀花地介紹了一大堆控件,其中自然也包括這 DatePicker 和 TimePicker,那么稍微高級(jí)些的用法呢?

如果你想做一個(gè)關(guān)于健身、鬧鐘等的 App,那么不可避免的會(huì)用到時(shí)間這些控件了。

<DatePicker x:Name="datePicker" Header="NoMasp Date" Foreground="Beige"/>          
<Button x:Name="btnOK" Click="btnOK_Click" Content="確定" Foreground="Cyan" Margin= "292,378,0,352" >
     <Button.Flyout>
          <Flyout>
              <TextBlock x:Name="tblock1" Foreground="Fuchsia"/>
          </Flyout>
     </Button.Flyout>
</Button>

那么我們可能需要所選定的時(shí)間是未來(lái)時(shí)間,也就是比應(yīng)用運(yùn)行時(shí)的時(shí)間要大。獲取當(dāng)前選中的時(shí)間給程序的其他部分使用也是很簡(jiǎn)單的,我這里的 year 等都在之前定義過(guò)了哦,在函數(shù)內(nèi)定義可是不明智的喲。

private void btnOK_Click(object sender, RoutedEventArgs e)
{
    if(datePicker.Date>DateTimeOffset.Now)
        tblock1.Text = string.Format("你所選中的時(shí)間是:{0}。", datePicker.Date.ToString("D"));
    else
        tblock1.Text = "噢!你想要穿越嗎?";    
    year = datePicker.Date.Year;
    month = datePicker.Date.Month;
    day = datePicker.Date.Day;   
}        

有意思的事情又來(lái)了,如果你是想要做一個(gè)時(shí)間囊,默認(rèn)的時(shí)間就是 10 年之后,那么 DatePicker 的初始事件如果正好就是 10 年后不是非常好嗎。那么我們要做的呢,首先就是給 DatePicker 的 Loaded 寫一條事件啦。(雖然我覺(jué)得 App 是保存不了 10 年的)

private void datePicker_Loaded(object sender, RoutedEventArgs e)
{
    datePicker.Date = DateTimeOffset.Now.AddYears(10);
}

如果不想興師動(dòng)眾去用 DatePicker 的 Loaded,那么也可以直接在后臺(tái)代碼中這樣寫。

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    datePicker.Date = DateTimeOffset.Now.AddYears(10);
}

我還做了一個(gè)小測(cè)試呢,在 Loaded 事件中讓時(shí)間增加 11 年,在 OnNavigatedTo 事件中讓時(shí)間增加 10 年,結(jié)果——結(jié)果是增加了 11 年啦,看來(lái)還是自家的 Loaded 更厲害。

接下來(lái)就是 TimePicker 啦,回到健身的話題,假設(shè)哈,6 點(diǎn)到 18 點(diǎn)才適合運(yùn)動(dòng),那么我們的 Microsoft Band 就做了以下這么個(gè)要求(開(kāi)玩笑啦)。

    private void btnOK_Click(object sender, RoutedEventArgs e)
        {
            TimeSpan startTime = new TimeSpan(6, 0, 0);
            TimeSpan endTime = new TimeSpan(18, 0, 0);
            if(timePicker.Time>=startTime&&timePicker.Time<=endTime)
            {
                tblock1.Text = string.Format("這段時(shí)間運(yùn)動(dòng)都是很好的哦——{0}。", timePicker.Time.ToString());
            }
            else
            {
                tblock1.Text = "此時(shí)間吧不適合運(yùn)動(dòng)的吧?";
            }       
        }        

也許你還想控制手環(huán)上時(shí)間選擇器的初始時(shí)間,那么代碼來(lái)了。

protected override void OnNavigatedTo(NavigationEventArgs e)
{                                              
     timePicker.Time = new TimeSpan(23, 0, 0);
}

作為強(qiáng)迫癥患者呢,每次我設(shè)定鬧鐘的時(shí)候都要設(shè)置在一個(gè)比較好的時(shí)間,比如被 5 整除啦、質(zhì)數(shù)啦。這里可以用 MinuteIncrement 屬性來(lái)控制分鐘的增量喲,比如增量為 5 呀。從小學(xué)起就飛得把電子手表的時(shí)間給設(shè)置成 24 小時(shí)制的,這個(gè)也是可以實(shí)現(xiàn)的,ClockIdentifier 設(shè)置成 24HourClock 就搞定啦。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)