WinForms中,DateTimePicker 控件用于让用户选择日期和时间。以下是如何使用 DateTimePicker 控件的一些基本信息和示例代码:
datetimePicker1.Value = DateTime.Now;
datetimePicker1.Format = DateTimePickerFormat.Short;
datetimePicker1.ShowUpDown = true;
以下是一个简单的示例,演示如何在窗体加载时设置 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应用。
这里有两个初心:
这里提到了“生态”,这是一个比较大的词,我想解释一下。
其实在准备上线UIBak网站的时候,我一直在思考“生态”这个问题。你如何理解“生态”这个事情呢? 我目前的理解是:
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 域名,考虑到未来国际化的需要。
网上也有相关的竞品学习和参考:
UIBak.com 是基于 Baklib CMS 搭建的,搭建的速度很快,也是通过模板,大概花费了我三天的时间,内容覆盖各种UI、组件、整页模板,配套一个帮助中心,一个博客,以及 Tools 工具箱。效果预览如下:
官网
代码预览
工具箱
在我们使用selenium进行自动化测试的时候,selenium能够帮助我们实现元素定位和点击输入等操作,但是有的时候,我们会发现,即使我们的元素定位没有问题,元素也无法执行操作;也有部分情况是我们无法直接定位滚动条河时间控件来进行操作,这个时候,我们就需要借助JavaScript来解决问题。本文就来给大家介绍一下selenium如何执行JavaScript脚本,以及这种方法的一些常见应用场景和最佳实践。
在Selenium中主要使用以下函数来调用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']
当页面显示的数据较多,需要点击底部的对象时,需要把鼠标移动到底部,才可以点击对象。
场景说明:
当我们在百度上搜索一个内容时,内容较多,我们想查看完整的页面需要滑动到页面底部。代码如下:
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)'))
大部分时间空间都是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脚本来优化自动化测试和网页操作,从而更好地满足项目需求。
*请认真填写需求信息,我们会在24小时内与您取得联系。