整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          WinForms DateTimePicker控件使用指南

          WinForms中,DateTimePicker 控件用于讓用戶選擇日期和時間。以下是如何使用 DateTimePicker 控件的一些基本信息和示例代碼:

          創建和設置 DateTimePicker 控件

          1. 添加 DateTimePicker 控件:在 Visual Studio 的工具箱中找到 DateTimePicker 控件,并將其拖放到窗體上。
          2. 設置 Value 屬性:您可以通過設置 DateTimePicker 的 Value 屬性來指定一個默認的日期和時間。
          datetimePicker1.Value = DateTime.Now;
          
          1. 格式化顯示的日期和時間:您可以通過設置 Format 屬性來控制顯示的日期和時間格式。
          datetimePicker1.Format = DateTimePickerFormat.Short;
          
          1. 啟用時間選擇:通過設置 ShowUpDown 屬性為 true,用戶可以使用上下箭頭來選擇時間。
          datetimePicker1.ShowUpDown = true;
          

          事件處理

          • ValueChanged 事件:當用戶選擇的日期和時間發生變化時,會觸發此事件。
          • CloseUp 事件:當用戶關閉 DateTimePicker 控件時,會觸發此事件。

          示例代碼

          以下是一個簡單的示例,演示如何在窗體加載時設置 DateTimePicker 控件的一些基本屬性,并處理 ValueChanged 事件:

          public partial class MainForm : Form
          {
              public MainForm()
              {
                  InitializeComponent();
          
                  // 設置 DateTimePicker 的默認值為當前日期和時間
                  datetimePicker1.Value = DateTime.Now;
          
                  // 設置日期格式為短格式(例如,"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)
              {
                  // 當用戶選擇的日期和時間發生變化時,執行此方法
                  DateTime selectedDate = datetimePicker1.Value;
                  // 在這里添加您的代碼,例如更新 UI 或記錄日志
              }
          }
          

          在這個示例中,我們首先設置了 DateTimePicker 控件的默認值、日期格式和時間選擇的啟用狀態。然后,我們為 ValueChanged 事件添加了一個處理程序,當用戶選擇的日期和時間發生變化時,該處理程序會被調用。在處理程序中,您可以根據需要執行任何邏輯,例如更新 UI 或將選定的日期和時間存儲到變量中。

          通過這些基本步驟,您可以在 WinForms 應用程序中輕松地使用 DateTimePicker 控件來讓用戶選擇日期和時間。

          碼科技旗下 UIBak 于 2024 年 3 月 5 日正式上線!

          關于產品定位

          這是一個基于 TailwindCss 框架的模板組件庫,為 Web 前端開發人員的 UI Kit 工具箱,完全免費開放,復制即用。同時,UIBak 也是配合創建一個基于Tailwind + Baklib CMS 的 UI 組件超市,方便制作Baklib CMS的用戶可以通過超市庫便捷尋找到各種可視化Web展示,以創建豐富的Web應用。

          這里有兩個初心:

          • 一是為我們公司自研的數字內容體驗云平臺 Baklib 的低代碼編輯器提供生態支持;
          • 一是維護一個公共免費的 Web UI 庫站點,為 TailwindCss 生態的中文環境添磚加瓦。

          這里提到了“生態”,這是一個比較大的詞,我想解釋一下。

          其實在準備上線UIBak網站的時候,我一直在思考“生態”這個問題。你如何理解“生態”這個事情呢? 我目前的理解是:

          1. 國外SaaS的核心能力不是生態,是連接。 也就說我做好一個核心場景,其他場景都通過API去連接,通過連接,幫助企業打造完整的數字化體驗。 所以國外的SaaS非常注重開放API用于連接。
          2. 國內的云平臺、SaaS、軟件廠商都不具備“開放API連接”的思維和條件,最多可成為“集成商”,通過合作尋找上下游打包形成一套解決方案。
          3. 對于”生態”的理解,我認為可以分解為:業務生態和技術生態。 技術生態有如Rails,當公司采用Rails以后, 就會圍繞Rails尋找他上下游的各種技術,形成社區,圈子。業務生態有如Notion, 大家通過Notion這個“工具”,打造各種業務比如做成CRM,做成OA,做成可視化平臺,做成簡歷, 各種模板超市、應用超市,形成一個大市場。
          4. Baklib 現有的客戶畫像主要是互聯網軟件公司的技術部門和運營部門, 針對這個畫像,我認為Baklib更適合打造一個技術生態, 圍繞“內容在Web上的各種輸出表達”,提供Web內容表達的技術生態,比如CMS、Blog、FAQ、Guide、Wiki這是表達,Card, Grid, List, Alert, Tooltip這也是表達。

          UI庫發展思路有兩個先:先滿足自己,再滿足別人;先滿足別人,再滿足自己。如果先滿足自己,品牌化會很強,生態的發展速度會取決于我們。如果先滿足別人,生態可能會發展更快,會推動 Baklib 的發展,到這種當時,沒有一個硬IP背書,非常難以讓人跟隨。所以對比下來,UI庫先面向我們Baklib去驅動發展。這就需要我們給Baklib的所有產品線設計一個業務模型,產品之間需要有關聯性,相輔相成。

          雖然我們說做個生態,但是生態的范圍得收斂到我們能夠支撐的范圍。目前,為企業設計完整業務流程,是生態邊界參考的重要依據。

          關于產品設計

          相比于其他 Web CSS 框架(如 Bootstrap),TailwindCss 非常吸引人的地方就是其預設了足夠用的 class, 需要什么樣的樣式,只需要查字典而不需要自定義 class,這個“約定大于配置”的理念,非常契合 Ruby on Rails 框架的理念[見 Rails Doctrine],而 Baklib 是基于 Ruby on Rails 開發的,所以我們認為 TailwindCss 是作為協同低代碼開發環境最優的選擇。網上搜索有關“Tailwind UI ”,“Tailwind Templates”得到的結果:

          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

          確定關鍵詞: theme/css-bak/lib, UI, Templates, components, Kits,于是通過這些關鍵詞查了一下域名,發現幾乎都被注冊了,以下是.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 域名,考慮到未來國際化的需要。

          網上也有相關的競品學習和參考:

          • TailwindCss: Rapidly build modern websites without ever leaving your HTML.
          • Tailwind UI - Official Tailwind CSS Components & Templates
          • Tailwind CSS component library - Flowbite
          • daisyUI — Tailwind CSS Components
          • Tailwind Component Library | Tailbits
          • Tailwind CSS Component Library | WindUI
          • Preline UI - Tailwind CSS component library
          • TailGrids: Tailwind UI Component Library, Kit and Templates
          • Tailwind CSS: 15 Component Libraries & UI Kits - Stack Diary
          • Xtend UI - Xtend UI is a powerful frontend library of Tailwind
          • VueTailwind - Customizable Vue Components for TailwindCSS
          • 58+ Tailwind CSS UI Libraries, Components & Templates - BestofTailwind

          網站預覽

          UIBak.com 是基于 Baklib CMS 搭建的,搭建的速度很快,也是通過模板,大概花費了我三天的時間,內容覆蓋各種UI、組件、整頁模板,配套一個幫助中心,一個博客,以及 Tools 工具箱。效果預覽如下:

          官網

          代碼預覽

          工具箱

          在我們使用selenium進行自動化測試的時候,selenium能夠幫助我們實現元素定位和點擊輸入等操作,但是有的時候,我們會發現,即使我們的元素定位沒有問題,元素也無法執行操作;也有部分情況是我們無法直接定位滾動條河時間控件來進行操作,這個時候,我們就需要借助JavaScript來解決問題。本文就來給大家介紹一下selenium如何執行JavaScript腳本,以及這種方法的一些常見應用場景和最佳實踐。

          Selenium中調用js

          在Selenium中主要使用以下函數來調用js:

          pythonexecute_script(script, *args)
          
          • 說明:在當前窗口/框架中同步執行JavaScript。
          • 參數:
            • script:被執行的js腳本
            • *args:被執行的js腳本中使用的參數
          • 使用方法:
            • driver.execute_script('return document.title;')
            • 注意: js腳本中return document.title;中使用return可以獲取js腳本返回的結果
          • 源碼:
          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']
          
          

          使用js完成滑動操作

          當頁面顯示的數據較多,需要點擊底部的對象時,需要把鼠標移動到底部,才可以點擊對象。

          場景說明:

          當我們在百度上搜索一個內容時,內容較多,我們想查看完整的頁面需要滑動到頁面底部。代碼如下:

          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/")
                  # 定位搜索框,傳入搜索內容
                  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腳本執行后的返回結果
                      #返回頁面標題
                  print(self.driver.execute_script('return document.title'))
                       #返回performance.timing
                  print(self.driver.execute_script('return JSON.stringify(performance.timing)'))
          
          

          使用js操作時間控件

          大部分時間空間都是readonly屬性,需要手動去選擇對應的時間,手工測試中很容易做到,自動化中對控件的操作可以使用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):
                  # 打開網址
                  self.driver.get('https://www.12306.cn/')
                  time.sleep(3)
                  # 定位時間元素;進行readonly屬性去除操作;賦值新日期
                  # 注意:可以合并執行JS方法的寫法
                  self.driver.execute_script(
                      'a=document.getElementById("train_date");a.removeAttribute("readonly");a.value="2024-3-20"')
                  time.sleep(3)
          
          

          總結

          通過使用Selenium執行JavaScript腳本,我們可以更靈活地操作根級別文檔和時間控件,提高了測試的效率和準確性。在實際應用中,開發者可以根據具體需求,靈活運用JavaScript腳本來優化自動化測試和網頁操作,從而更好地滿足項目需求。


          主站蜘蛛池模板: 国产伦精品一区二区三区视频小说| 人妻少妇精品一区二区三区| 亚洲一区二区三区四区视频| 亚洲美女视频一区二区三区| 最美女人体内射精一区二区| 精品少妇ay一区二区三区| 国产成人无码精品一区不卡| 韩国一区二区视频| 视频一区二区三区在线观看| 无码国产精品一区二区免费模式| 成人无码精品一区二区三区| 国产a∨精品一区二区三区不卡| 国产精品视频一区国模私拍| 国产亚洲无线码一区二区 | 久久久久人妻精品一区蜜桃| 国产大秀视频在线一区二区| 91久久精一区二区三区大全| 亚洲一区AV无码少妇电影| 一区二区三区观看| 天美传媒一区二区三区| 在线精品一区二区三区| 亚洲韩国精品无码一区二区三区| 天天看高清无码一区二区三区 | 久久综合亚洲色一区二区三区| 视频一区在线播放| 精品国产一区二区三区久久影院| 日韩内射美女人妻一区二区三区 | 一区二区三区精品高清视频免费在线播放 | 国产伦一区二区三区免费| 亚洲日本久久一区二区va| 无码国产伦一区二区三区视频 | 熟妇人妻AV无码一区二区三区| 八戒久久精品一区二区三区| 亚洲一区二区三区成人网站| 久久精品视频一区二区三区| A国产一区二区免费入口| 国产天堂一区二区综合| 国产福利电影一区二区三区,亚洲国模精品一区 | 日韩一区二区视频| 精品深夜AV无码一区二区老年 | 无码视频一区二区三区|