WinForms中,DateTimePicker 控件用于讓用戶選擇日期和時間。以下是如何使用 DateTimePicker 控件的一些基本信息和示例代碼:
datetimePicker1.Value = DateTime.Now;
datetimePicker1.Format = DateTimePickerFormat.Short;
datetimePicker1.ShowUpDown = true;
以下是一個簡單的示例,演示如何在窗體加載時設(shè)置 DateTimePicker 控件的一些基本屬性,并處理 ValueChanged 事件:
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
// 設(shè)置 DateTimePicker 的默認(rèn)值為當(dāng)前日期和時間
datetimePicker1.Value = DateTime.Now;
// 設(shè)置日期格式為短格式(例如,"MM/dd/yyyy")
datetimePicker1.Format = DateTimePickerFormat.Short;
// 啟用時間選擇
datetimePicker1.ShowUpDown = true;
// 添加 ValueChanged 事件處理程序
datetimePicker1.ValueChanged += new EventHandler(datetimePicker1_ValueChanged);
}
private void datetimePicker1_ValueChanged(object sender, EventArgs e)
{
// 當(dāng)用戶選擇的日期和時間發(fā)生變化時,執(zhí)行此方法
DateTime selectedDate = datetimePicker1.Value;
// 在這里添加您的代碼,例如更新 UI 或記錄日志
}
}
在這個示例中,我們首先設(shè)置了 DateTimePicker 控件的默認(rèn)值、日期格式和時間選擇的啟用狀態(tài)。然后,我們?yōu)?ValueChanged 事件添加了一個處理程序,當(dāng)用戶選擇的日期和時間發(fā)生變化時,該處理程序會被調(diào)用。在處理程序中,您可以根據(jù)需要執(zhí)行任何邏輯,例如更新 UI 或?qū)⑦x定的日期和時間存儲到變量中。
通過這些基本步驟,您可以在 WinForms 應(yīng)用程序中輕松地使用 DateTimePicker 控件來讓用戶選擇日期和時間。
碼科技旗下 UIBak 于 2024 年 3 月 5 日正式上線!
這是一個基于 TailwindCss 框架的模板組件庫,為 Web 前端開發(fā)人員的 UI Kit 工具箱,完全免費開放,復(fù)制即用。同時,UIBak 也是配合創(chuàng)建一個基于Tailwind + Baklib CMS 的 UI 組件超市,方便制作Baklib CMS的用戶可以通過超市庫便捷尋找到各種可視化Web展示,以創(chuàng)建豐富的Web應(yīng)用。
這里有兩個初心:
這里提到了“生態(tài)”,這是一個比較大的詞,我想解釋一下。
其實在準(zhǔn)備上線UIBak網(wǎng)站的時候,我一直在思考“生態(tài)”這個問題。你如何理解“生態(tài)”這個事情呢? 我目前的理解是:
UI庫發(fā)展思路有兩個先:先滿足自己,再滿足別人;先滿足別人,再滿足自己。如果先滿足自己,品牌化會很強,生態(tài)的發(fā)展速度會取決于我們。如果先滿足別人,生態(tài)可能會發(fā)展更快,會推動 Baklib 的發(fā)展,到這種當(dāng)時,沒有一個硬IP背書,非常難以讓人跟隨。所以對比下來,UI庫先面向我們Baklib去驅(qū)動發(fā)展。這就需要我們給Baklib的所有產(chǎn)品線設(shè)計一個業(yè)務(wù)模型,產(chǎn)品之間需要有關(guān)聯(lián)性,相輔相成。
雖然我們說做個生態(tài),但是生態(tài)的范圍得收斂到我們能夠支撐的范圍。目前,為企業(yè)設(shè)計完整業(yè)務(wù)流程,是生態(tài)邊界參考的重要依據(jù)。
相比于其他 Web CSS 框架(如 Bootstrap),TailwindCss 非常吸引人的地方就是其預(yù)設(shè)了足夠用的 class, 需要什么樣的樣式,只需要查字典而不需要自定義 class,這個“約定大于配置”的理念,非常契合 Ruby on Rails 框架的理念[見 Rails Doctrine],而 Baklib 是基于 Ruby on Rails 開發(fā)的,所以我們認(rèn)為 TailwindCss 是作為協(xié)同低代碼開發(fā)環(huán)境最優(yōu)的選擇。網(wǎng)上搜索有關(guān)“Tailwind UI ”,“Tailwind Templates”得到的結(jié)果:
TailwindUI, Flowbite, DaisyUI, Tailbits, WindUI, PrelineUI, TailGrids, XtendUI, VueTailwind, Best of Tailwind,UI Kit vs Component Library, My library / kit is not on this list, Tailwind UI, daisyUI, Mamba UI, Headless UI, Tailwind Elements, Xtend UI, Flowbite, Tailwind UI Kit, Meraki UI, Tailblocks, HyperUI, Kimia UI, Tailwind Starter Kit, Material Tailwind, Konsta UI, Preline
確定關(guān)鍵詞: theme/css-bak/lib, UI, Templates, components, Kits,于是通過這些關(guān)鍵詞查了一下域名,發(fā)現(xiàn)幾乎都被注冊了,以下是.com/.cn 域名中還可以被注冊的:
bak-ui.com, bak-lib.com, UIBak.com,Libkit.cn,kitbak.cn,bakit.cn,bakkit.cn,uibase.cn,kitbase.cn,Libase.cn,Libbase.cn,bakbase.cn
最終選定了 UIBak.com/cn,主要是因為還有.com 域名,考慮到未來國際化的需要。
網(wǎng)上也有相關(guān)的競品學(xué)習(xí)和參考:
UIBak.com 是基于 Baklib CMS 搭建的,搭建的速度很快,也是通過模板,大概花費了我三天的時間,內(nèi)容覆蓋各種UI、組件、整頁模板,配套一個幫助中心,一個博客,以及 Tools 工具箱。效果預(yù)覽如下:
官網(wǎng)
代碼預(yù)覽
工具箱
在我們使用selenium進(jìn)行自動化測試的時候,selenium能夠幫助我們實現(xiàn)元素定位和點擊輸入等操作,但是有的時候,我們會發(fā)現(xiàn),即使我們的元素定位沒有問題,元素也無法執(zhí)行操作;也有部分情況是我們無法直接定位滾動條河時間控件來進(jìn)行操作,這個時候,我們就需要借助JavaScript來解決問題。本文就來給大家介紹一下selenium如何執(zhí)行JavaScript腳本,以及這種方法的一些常見應(yīng)用場景和最佳實踐。
在Selenium中主要使用以下函數(shù)來調(diào)用js:
pythonexecute_script(script, *args)
python def execute_script(self, script, *args):
converted_args = list(args)
command = None
if self.w3c:
command = Command.W3C_EXECUTE_SCRIPT
else:
command = Command.EXECUTE_SCRIPT
return self.execute(command, {
'script': script,
'args': converted_args})['value']
當(dāng)頁面顯示的數(shù)據(jù)較多,需要點擊底部的對象時,需要把鼠標(biāo)移動到底部,才可以點擊對象。
場景說明:
當(dāng)我們在百度上搜索一個內(nèi)容時,內(nèi)容較多,我們想查看完整的頁面需要滑動到頁面底部。代碼如下:
python
import time
from selenium import webdriver
class TestJs:
def setup(self):
self.driver=webdriver.Chrome()
self.driver.maximize_window()
self.driver.implicitly_wait(5)
def teardown(self):
self.driver.quit()
def test_js_scroll(self):
self.driver.get("https://www.baidu.com/")
# 定位搜索框,傳入搜索內(nèi)容
self.driver.find_element_by_id("kw").send_keys("selenium")
# 使用JS定位搜索按鈕,點擊搜索
ele_search = self.driver.execute_script('return document.getElementById("su")')
ele_search.click()
# 將搜索頁面滑動至最下方
self.driver.execute_script('document.documentElement.scrollTop=10000')
time.sleep(3)
# 點擊下一頁
self.driver.find_element_by_xpath('//*[@id="page"]/div/a[10]').click()
time.sleep(3)
#打印js腳本執(zhí)行后的返回結(jié)果
#返回頁面標(biāo)題
print(self.driver.execute_script('return document.title'))
#返回performance.timing
print(self.driver.execute_script('return JSON.stringify(performance.timing)'))
大部分時間空間都是readonly屬性,需要手動去選擇對應(yīng)的時間,手工測試中很容易做到,自動化中對控件的操作可以使用js完成,我們需要先移除readonly屬性,再給value賦值,具體代碼如下:
pythonClass TestJs:
def setup(self):
self.driver=webdriver.Chrome()
self.driver.maximize_window()
self.driver.implicitly_wait(5)
def teardown(self):
self.driver.quit()
def test_js_datetime(self):
# 打開網(wǎng)址
self.driver.get('https://www.12306.cn/')
time.sleep(3)
# 定位時間元素;進(jìn)行readonly屬性去除操作;賦值新日期
# 注意:可以合并執(zhí)行JS方法的寫法
self.driver.execute_script(
'a=document.getElementById("train_date");a.removeAttribute("readonly");a.value="2024-3-20"')
time.sleep(3)
通過使用Selenium執(zhí)行JavaScript腳本,我們可以更靈活地操作根級別文檔和時間控件,提高了測試的效率和準(zhǔn)確性。在實際應(yīng)用中,開發(fā)者可以根據(jù)具體需求,靈活運用JavaScript腳本來優(yōu)化自動化測試和網(wǎng)頁操作,從而更好地滿足項目需求。
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。