เป็นไปได้ไหมที่จะใช้ DateTimePicker (Winforms) เพื่อเลือกวันที่และเวลา (ในดรอปดาวน์) คุณจะเปลี่ยนการแสดงผลที่กำหนดเองของค่าที่เลือกได้อย่างไร นอกจากนี้ยังเป็นไปได้ไหมที่จะทำให้ผู้ใช้สามารถพิมพ์วันที่ / เวลาด้วยตนเองได้?
เป็นไปได้ไหมที่จะใช้ DateTimePicker (Winforms) เพื่อเลือกวันที่และเวลา (ในดรอปดาวน์) คุณจะเปลี่ยนการแสดงผลที่กำหนดเองของค่าที่เลือกได้อย่างไร นอกจากนี้ยังเป็นไปได้ไหมที่จะทำให้ผู้ใช้สามารถพิมพ์วันที่ / เวลาด้วยตนเองได้?
คำตอบ:
ตั้งค่ารูปแบบเป็นกำหนดเองจากนั้นระบุรูปแบบ:
dateTimePicker1.Format = DateTimePickerFormat.Custom;
dateTimePicker1.CustomFormat = "MM/dd/yyyy hh:mm:ss";
หรืออย่างไรก็ตามคุณต้องการจัดวางมัน จากนั้นคุณสามารถพิมพ์วันที่ / เวลาได้โดยตรง หากคุณใช้ MMM คุณจะต้องใช้ค่าตัวเลขสำหรับการเข้าเดือนยกเว้นว่าคุณเขียนรหัสด้วยตัวคุณเอง (เช่น 5 ผลลัพธ์ในเดือนพฤษภาคม)
ไม่ทราบเกี่ยวกับเครื่องมือเลือกวันและเวลาด้วยกัน ฟังดูเหมือนตัวควบคุมที่กำหนดเองสำหรับฉัน
System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern
และSystem.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern
รับรูปแบบของวัฒนธรรมปัจจุบันได้ ลิงก์ MSDN
Dim date As String = CultureInfo...ShortDatePattern Dim time As String = CultureInfo...ShortTimePattern dtpThing.Format = DateTimePickerFormat.Custom dtpThingEnd.CustomFormat = date + " " + time
คุณยังสามารถ จำกัด พูดองค์ประกอบเวลาด้วยตนเอง: Dim date As String = CultureInfo...ShortDatePattern Dim time As String = CultureInfo...ShortTimePattern dtpThing.Format = DateTimePickerFormat.Custom dtpThingEnd.CustomFormat = date + " HH:mm"
เป็นการดีที่สุดที่จะใช้สอง DateTimePickers สำหรับงานหนึ่งจะเป็นค่าเริ่มต้นสำหรับส่วนวันที่และ DateTimePicker ที่สองสำหรับส่วนเวลา จัดรูปแบบ DateTimePicker ที่สองดังนี้
timePortionDateTimePicker.Format = DateTimePickerFormat.Time;
timePortionDateTimePicker.ShowUpDown = true;
ทั้งสองควรมีลักษณะเช่นนี้หลังจากที่คุณจับพวกเขา
ในการรับ DateTime จากทั้งสองตัวควบคุมให้ใช้รหัสต่อไปนี้
DateTime myDate = datePortionDateTimePicker.Value.Date +
timePortionDateTimePicker.Value.TimeOfDay;
ในการกำหนด DateTime ให้กับตัวควบคุมทั้งสองใช้รหัสต่อไปนี้
datePortionDateTimePicker.Value = myDate.Date;
timePortionDateTimePicker.Value = myDate.TimeOfDay;
โชคไม่ดีที่นี่เป็นหนึ่งในบรรดาผู้เรียกชื่อผิดหลายคนในกรอบหรือเป็นการละเมิด SRP ที่สุด
ในการใช้ DateTimePicker เป็นครั้งให้ตั้งค่าคุณสมบัติ Format เป็น Time หรือ Custom (ใช้ Custom หากคุณต้องการควบคุมรูปแบบของเวลาโดยใช้คุณสมบัติ CustomFormat) จากนั้นตั้งค่าคุณสมบัติ ShowUpDown เป็นจริง
แม้ว่าผู้ใช้อาจตั้งค่าวันที่และเวลาด้วยกันพวกเขาไม่สามารถใช้ GUI เพื่อตั้งค่าทั้งสอง
ตัวเลือก DateTime สามารถใช้เพื่อเลือกทั้งวันที่และเวลาซึ่งเป็นสาเหตุที่เรียกว่า 'ตัวเลือกวันที่และเวลา' คุณสามารถตั้งค่าคุณสมบัติ " รูปแบบ " เป็น " กำหนดเอง " และตั้งค่าตัวระบุรูปแบบที่แตกต่างกันเพื่อแสดง / เลือกวันที่ / เวลาในรูปแบบต่างๆในคุณสมบัติ " รูปแบบกำหนดเอง " อย่างไรก็ตามหากคุณต้องการเปลี่ยนวันที่คุณสามารถใช้ปฏิทินป๊อปอัปได้ในกรณีที่มีการเลือกเวลา (ในตัวควบคุมเดียวกันคุณจะต้องใช้ปุ่มขึ้น / ลงเพื่อเปลี่ยนค่า
ตัวอย่างเช่นรูปแบบที่กำหนดเอง " ddddd, MMMM dd, yyyy hh: mm: ss tt " จะให้ผลลัพธ์เช่นนี้: " วันพฤหัสบดีที่ 20 สิงหาคม 2009 เวลา 02:55:23 น. "
คุณสามารถเล่นกับชุดรูปแบบที่แตกต่างกันเพื่อให้เหมาะกับความต้องการของคุณเช่นMMMMจะให้ " สิงหาคม " ในขณะที่MMจะให้ " สิงหาคม "
yyyy-MM-dd HH:mm
) และจากนั้นส่งกลับค่าที่สะท้อนให้เห็นเพียงส่วนหนึ่งของการแสดงวันที่และเวลา ฉันจะเรียกมันว่าเป็นข้อผิดพลาด แต่มันอยู่ที่นั่นมานานหลายสิบปี ...
ไปที่Properties
ของคุณdateTimePicker
ใน Visual Studio และการตั้งค่าไปFormat
Custom
ภายใต้CustomFormat
รูปแบบของคุณ ในกรณีของฉันฉันใช้MMMMdd, yyyy | hh:mm
ฉันกลัวว่าการควบคุม DateTimePicker จะไม่มีความสามารถในการทำสิ่งเหล่านั้น มันเป็นการควบคุมขั้นพื้นฐาน (และน่าผิดหวัง!) ตัวเลือกที่ดีที่สุดของคุณอาจเป็นการค้นหาการควบคุมของบุคคลที่สามที่ทำในสิ่งที่คุณต้องการ
สำหรับตัวเลือกในการพิมพ์วันที่และเวลาด้วยตนเองคุณสามารถสร้างส่วนประกอบแบบกำหนดเองด้วย TextBox / DateTimePicker รวมกันเพื่อทำสิ่งนี้และมันอาจทำงานได้ดีพอสมควรหากการควบคุมของบุคคลที่สามไม่ใช่ตัวเลือก