2015-10-14 36 views
-1

我正在與vb的舊項目。 Net。,在3.5框架中創建。 有一個日期時間選擇器控制。控制不適用於vb。淨winforms

enter image description here

不過,現在我已經再次下降這種控制,但我沒有發現這一點。用4.0控制,

今年,它有上/下箭頭。

我想在點擊下拉菜單時關注年份選擇。 正如你所看到的2015年10月 當我選擇2015年時,它會顯示向下箭頭以增加/減少年份。

幫我弄清楚,我怎麼找到事件,它選擇/集中今年控制時顯示的控件。

我正在修改這個問題,清除更多所需的功能。 enter image description here

+1

你想選擇年只要? –

+3

DateTimePicker的行爲取決於操作系統。 –

+0

不,這個控件沒有問題,但我想說的是,在這個控件中,如果我們用鼠標點擊「2015」的值,用戶界面會發生變化,我可以看到上下箭頭來操縱年份值,我想要的,是,而不是點擊,當我點擊日期時間選擇器控制,通過代碼我強制專注於年份區域,以便用戶可以看到,有一個選項也可以在幾年之間導航。 – DareDevil

回答

1

你應該知道的DateTimePicker該行爲取決於操作系統,如果你想只有一年選擇,您可以在設計或代碼做到這一點:

  • 設置FormatDateTimePickerFormat.Custom;
  • Set CustomFormat to yyyy;
  • 設置ShowUpDowntrue;

enter image description here

編輯

我們可以模擬點擊年份部分程序,但它會表現不同上是不希望的不同的操作系統。

但是這裏的主要思想對於這種情況可能有用。

在這段代碼中,我們將光標移動到合適的位置的使用代碼進行點擊:

[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] 
public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo); 

private const int MOUSEEVENTF_LEFTDOWN = 0x02; 
private const int MOUSEEVENTF_LEFTUP = 0x04; 

public void PerformClick() 
{ 
    uint X = (uint)Cursor.Position.X; 
    uint Y = (uint)Cursor.Position.Y; 
    mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0); 
} 

//Don't forget to attach handler to DropDown event of your `DatePicker` 
private void dateTimePicker1_DropDown(object sender, EventArgs e) 
{ 
    //wait to dropdown show 
    System.Threading.Thread.Sleep(500); 

    //Calculate the point that you want to click 
    //Change 125 and 5 to tune the location. 
    var p = new Point(
     this.dateTimePicker1.Location.X + 125, 
     this.dateTimePicker1.Location.Y + this.dateTimePicker1.Height + 5 
     ); 

    Cursor.Position = this.PointToScreen(p); 
    PerformClick(); 
} 

這裏是我的系統上的結果:

enter image description here

+0

您是否看到我編輯的問題? – DareDevil

+0

@DareDevil是的,我現在看到它:)你應該知道'DateTimePicker'的行爲取決於操作系統,例如在Windows 8中,如果你點擊年份'DateTimePicker'行爲不同,並顯示一個monthes列表。所以雖然我認爲我們可以通過編程模擬點擊年,但它在不同的操作系統上表現不同,這是不需要的。 –

+0

@DareDevil作爲一個建議,當你想以一種你從未見過的方式做一份工作時,你應該再想一想。 –