首页
学习
活动
专区
圈层
工具
发布

总结DevExpress10个使用技巧

DevExpress是非常主流的.NET控件,目前全世界和中国都用很多用户使用,不过由于是英文版,初次接触的同学可能会觉得困难,这里就总结DevExpress常见的10个使用技巧。...DevExpress.LookAndFeel.UserLookAndFeel.Default.SetSkinStyle("Liquid Sky");    //若皮肤称号错误则按系统默许设置(第一个皮肤...new Font(this.Font.FontFamily, currentFontSize); 10.treeView  为tree节点加右键菜单并选中该节点         private void treeList1... hi = treeList1.CalcHitInfo(e.Location);                 if (hi.Node !....FindNodeByID(hi.Node.Id);                     treeList1.FocusedNode = node;                       this.popupMenu1

3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    关于VUE3+TS利用递归组件完成TreeList的设计与实现

    今天和大家探讨的问题是,怎样设计一个类似vscode目录系统,也就是个treeList 不着急,您且听我慢慢道来 功能分析 我们这个目录系统的设计,由于我司乃vue为主栈,我们就使用vue3为例开发...方法俩完成全局组件注册,这也是现在的插件通用套路 createApp(App).use(fileSystem).mount('#app') 插件需要设计那些事件 按照理论来说,你的每一步操作,其实都需要有一个事件抛出...这俩是一对 ,一个移入一个移出,值得注意的是dragEnter 发生在 dragLeave 之前 并且如果 移动到子元素,这两个事件会再次执行,于是我们需要做特殊处理 // 保存最新的进入节点, 为了解决移动到子元素...,那么我就需要向上寻找,找到上级文件夹,再去抛出事件 所以我们有了emit('setDragFolder') 来找到上级文件夹,抛出事件 // 找到文件夹 const setDragFolder = (...) => { emit('onDrop', props.model) } 这里需要注意的是,由于是个递归组件,我们需要将事件层层抛出,于是就有了透传事件 treeList @on-click

    3.6K20

    为什么要有一个线程来将结束的线程移除出执行区?转移线程的时候要判断线程是否为空遍历线程的容器会抛出ConcurrentM

    while(runningList.size()<maxThreadRun){//当执行区的大小小于最大可同时运行线程的数量时,才能放的进 从代码上看出,实际上也是将线程从等待区中取出到执行区的过程中控制的 为什么要有一个线程来将结束的线程移除出执行区...取出等待区中最后一个线程 为什么不能将空线程放进执行区呢?...因为这样子,空线程在执行区中start和判断这个线程是否结束的时候(getState()==Thread.State.TERMINATED),会抛出NullPointerException空指针异常,会无缘无故占领了执行区的空间...,抛出异常和处理异常也会浪费时间 而且不知道为什么,如果不判断的话,会发生阻塞 我想了想,想到了一个不靠谱的解释: 在主线程提交线程给executor之前,executor一直在把空的线程丢进执行区...遍历线程的容器会抛出ConcurrentModificationException异常 ConcurrentModificationException这个异常是什么呢?

    1.3K60

    端到端测试实践:Jenkins集成TestCafe

    环境 Jenkisn:2.183 TestCafe:1.3.0 为什么采用TestCafe做自动化测试 前端Vue或是netCore要添加单元测试相对较复杂,需要一定的时间来沉淀,不能解燃眉之急 经常会因为代码重构...足够简单,只要使用过jQuery,基本可以几分钟上手 要实现的目标 目前前端代码通过GitLab来进行管理,采用Merge Request的开发模式,开发人员的代码被合并到master后,Jenkins会自动构建到测试环境...,希望自动化测试能做到下面两点: 能在前端项目构建完成后自动执行TestCafe脚本进行测试 能提供测试的完整结果 步骤 1、在Jenkins中新创建一个新的项目 Git中配置的测试的代码地址https...://github.com/oec2003/testcafe-ci-demo.git是我fork的官网的一个例子,原项目地址为:https://github.com/DevExpress-Examples...Application\chrome.exe tests/**/* -r xunit:res.xml 上面执行的命令分为三个部分: testcafe的执行程序 测试的浏览器的路径,此处为chrome的路径,这里有一个小坑

    1.6K30

    原来,这才是 JDK 推荐的线程关闭方式

    首先问为什么要退出一个线程,再提问如何退出一个线程 需要线程退出的常见场景 任务执行完成,或异常终止,任务认为无需再占用线程。 线程池根据当前任务执行情况,伸缩线程池。...对Thread.Stop()的调用应该被简单的代码代替,例如 修改一个变量,目标线程定期检查这个变量,有序从run 方法return出来。...那为什么目标线程阻塞在Object.wait(),Sleep()方法时,抛出了interruptException,会取消标记呢?...()) { //回收资源,退出线程 } } 有人会问,既然上层都能知道处理中断,为什么下层方法开发者会不记得抛出中断或重置中断位呢?...总结 不推荐强制销毁线程,会导致资源无法被释放,进行中请求无法正常处理完,导致业务数据处于不可知的状态。 Java推荐优雅退出线程。 业务层可以使用字段标记,定期检查是否需要退出任务。

    61620

    .NET成人礼 | 还记得20年前一起拖过的控件吗?

    拖控件生态,也养活了诸如DevExpress、Telerik、葡萄城等队友。...我第一天就被高级研发经理训斥了:“公司为了这个项目花钱买了 DevExpress 的 ASP.NET 控件,你为什么不用啊?” 。面对公司白买的控件,我笑出了眼泪,就像这样:?...“ 2014年微软组织并成立.NET基金会,微软在成为主要的开源参与者的道路上又前进了一步。...2014年以来已经有众多知名公司加入.NET基金会,Google,微软,AWS三大云厂商已经齐聚.NET基金会,在平台项目中,.NET平台上有87%贡献者其实并不在Microsoft工作。...为了将.NET基金会变成一个更加多样化和成员驱动的组织,微软把.NET 的发展真正交给社区,为了让OSS真正蓬勃发展。

    1K20

    原来这才是 JDK 推荐的线程关闭方式,别再乱用了!

    首先问为什么要退出一个线程,再提问如何退出一个线程 需要线程退出的常见场景 任务执行完成,或异常终止,任务认为无需再占用线程。 线程池根据当前任务执行情况,伸缩线程池。...对Thread.Stop()的调用应该被简单的代码代替,例如 修改一个变量,目标线程定期检查这个变量,有序从run 方法return出来。...那为什么目标线程阻塞在Object.wait(),Sleep()方法时,抛出了interruptException,会取消标记呢?...()) { //回收资源,退出线程 } } 有人会问,既然上层都能知道处理中断,为什么下层方法开发者会不记得抛出中断或重置中断位呢?...总结 不推荐强制销毁线程,会导致资源无法被释放,进行中请求无法正常处理完,导致业务数据处于不可知的状态。 Java推荐优雅退出线程。 业务层可以使用字段标记,定期检查是否需要退出任务。

    46210

    DataTalk:收集有用的数据问题

    0x00 为什么会有 DataTalk? 在一个以交流为主的社区中,不管是技术讨论亦或是头脑风暴,我们最终所期望的目标都是能够得到自我认知的提升。...因此,在和几个朋友的讨论中,我们先开放 DataTalk 的两个模块: 问答模块:问答模块主要是大家在群里讨论的内容,我们定期会整理出来一些比较好的问题和回答 主题讨论:主题讨论会以讨论的形式展开,我们定期抛出一些问题...,让群友一起来发表自己的看法 更多的模块会随着整个活动的进行而逐渐开放。...这些内容,我们都会定期通过公众号的方式推送,然后在Github中也会有相应的记录。...为什么要这样做?除了上面说的冠冕堂皇的东西之外,从完全个人的角度来讲,我是希望通过这种方式来提升自己,去了解不同的问题能够极大地扩充自己的知识面,而和同行一起讨论问题又能带来不同的思考方式。

    3.1K40

    你是这么写接口的么

    如果返回的信息不凌乱,前端后对接会变得更加和谐和默契。 笔者注:过多的返回值,也会引发性能、网络、安全等一系列问题,需要引起重视。...group/dashboardTreeList 这个路径中有两相dashboard,前者已经指明了此接口是/dashboard/模块下的,后面就不需要再出现了,应改为:dashboard/group/treeList...问题三:路由风格要统一 接口风格不统一,有些是Rest风格的,有些不是Rest风格的 问题四:所有接口全部合成一个 上图是某项目的销售简报,从电商迁移过来的,一个页面中有多个图表,但全部用一个接口查询返回...为什么前端处理这种格式呢?因为UI和用户需求是经常变的,如果某天用户把小数位数由保留1位改成保留2位小数,前端修改起来要容易得多,而且部署也不会造成服务器重启,只用刷新浏览器即可。...现在前端多是基于SPA的前后端分离地开发,打包多会有HASH码,很少会影响页面访问,但放在后端处理就困难得多。 笔者注:展示的事,交给前端,数据格式一定要定义清楚,可以减少大量非必要的隐式转换。

    38510

    网站的密码为什么不支持一些特殊字符?

    今天有个同事在群里抛出一个话题"我发现XXX网站不支持我密码生成器的规则,查了半天最终是几个特殊字符导致,为什么不支持这几个特殊字符?"...,我看到这问题后,因为之前做过XXX网站会员登录系统缘故一想确实很多网站支持的不太一致,为什么?有什么历史背景么?为什么密码不支持中文呢?...由于网络安全的原因为防止sql注入风险,所以会减少一些特殊的字符作为密码 2....那为什么不能用中文作为密码呢? 其实理论上是可以的以下是我的测试结果,但为什么没用中文密码网上更多的说法是实现成本的和国际化的问题。...其实不管用哪种方式,安全只是相对的现在rsa2048的都不安全了(此时我在想量子计算出来后,那时的安全加密方式是什么样),所以更好的方式是提升自己的安全意识,定期更换密码。

    3.8K10

    从SSO出发谈谈登录态保护

    的确,将会话 id 作为每一个请求的参数,服务器接收请求自然能解析参数获得会话 id,并借此判断是否来自同一会话,这个思路当然是可以的,只是这种做法的缺点也十分明显,就是请求的 URL 会变得非常长,隐秘性也很差...为什么这么说?我们逐一分析下。 第一点,都是集团内网的网站,因此所有的站点都是“*.alibaba.com”,域名统一这一点不存在限制。其二,集团内技术栈统一。...只不过浏览器针对一个域名(根域及子域)下的 Cookie 数量有数量限制,超过则会按规则逐出部分 Cookie,DevExpress[1]网站给出了一些浏览器对于 Cookie 的限制,如下图所示...在得知了这个限制之后,我们也就理解了为什么共享 Cookie 的方案即使是在集团内也有诸多的限制了。...References [1] DevExpress: https://docs.devexpress.com/AspNet/11912/common-concepts/cookies-support [

    1.4K30

    你是这么写接口的么

    如果返回的信息不凌乱,前端后对接会变得更加和谐和默契。 笔者注:过多的返回值,也会引发性能、网络、安全等一系列问题,需要引起重视。...group/dashboardTreeList 这个路径中有两相dashboard,前者已经指明了此接口是/dashboard/模块下的,后面就不需要再出现了,应改为:dashboard/group/treeList...问题三:路由风格要统一 接口风格不统一,有些是Rest风格的,有些不是Rest风格的 问题四:所有接口全部合成一个 上图是某项目的销售简报,从电商迁移过来的,一个页面中有多个图表,但全部用一个接口查询返回...为什么前端处理这种格式呢?因为UI和用户需求是经常变的,如果某天用户把小数位数由保留1位改成保留2位小数,前端修改起来要容易得多,而且部署也不会造成服务器重启,只用刷新浏览器即可。...现在前端多是基于SPA的前后端分离地开发,打包多会有HASH码,很少会影响页面访问,但放在后端处理就困难得多。 笔者注:展示的事,交给前端,数据格式一定要定义清楚,可以减少大量非必要的隐式转换。

    31520

    Java面试专题之八:面试大概率会问到的6个多线程问题

    java 虚拟机采用抢占式调度模型,是指优先让可运行池中优先级高的线程占用CPU,如果可运行池中的线程优先级相同,那么就随机选择一个线程,使其占用CPU,处于运行状态的线程会一直运行,直至它不得不放弃...为什么要使用 Executor 线程池框架 每次执行任务创建线程 new Thread()比较消耗性能,创建一个线程是比较耗时、耗资源的。...直接使用 new Thread() 启动的线程不利于扩展,比如定时执行、定期执行、定时定期执行、线程中断等都不便实现。...框架中已经有定时、定期、单线程、并发数控制等功能。 综上所述使用线程池框架 Executor 能更好的管理线程、提供系统资源使用率。 ? 5、java 中有几种方法可以实现一个线程?...Thread 提供的interrupt()方法,因为该方法虽然不会中断一个正在运行的线程,但是它可以使一个被阻塞的线程抛出一个中断异常,从而使线程提前结束阻塞状态,退出堵塞带码。

    42610

    Executor并发框架

    浮现于脑海中的一个基本的问题是,当我们创建 java.lang.Thread 的对象或调用实现了 Runnable/Callable 接口来达到的程序的并行性时,为什么需要线程池?...当一个线程利用完 CPU 的时间片后另一个线程即将利用CPU的时间片时,CPU 会花费大量的时间来切换线程的上下文。 所有的这些因素都会导致系统的吞吐量下降。...一旦执行任务的线程有空闲的了,它们会从队列中取下一个任务来执行。对于 JDK 提供的现成的 executors 此任务队列基本是无界的。 2....如果在执行任务时出现异常,则对 get 方法的调用将抛出一个ExecutionException。...; } } Task 类实现 Callable 接口并有一个 String 类型作为返回值的方法。 这个方法也可以抛出 Exception。

    42230

    PHP数据结构-二叉树的遍历及逻辑操作

    为什么这么说呢?不同于栈和队列,树结构其实已经不是一维的了,它有分支,有不同的角度,更重要的是它有了层级的概念。...小伙伴们请仔细看好了,这一个简单的建树操作其实内含不少玄机: 我们使用一个数组来依次表示树的各个结点,比如依次输入 A 、 B 、 C 、 D 、 E …… (树的顺序存储中我们会再次看到它们的身影)...$treeList = ['', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O']; $tree =...CreateBiTree($treeList, 1); print_r($tree); // BiTree Object // ( // [data] => A // [lChild...InOrderTraverse($t->rChild); } } InOrderTraverse($tree); // H,D,I,B,J,E,K,A,L,F,M,C,N,G,O, 中序遍历的步骤就是我们会直接先走到最左边的子结点

    50930

    《多线程系列四》解密线程池的所作所为

    一、线程池是什么 线程池就是一个对象持有一堆线程,举个例子就是饿了么养的骑手团队。线程池就是这个团队,每个骑手都是一个线程。 二、为什么要用线程池?...假如现在商家有外卖单子,需要骑手去送单,这个时候的外卖任务就会派单给骑手,为什么要用线程池呐?...第二就是不能一个单子来了就来一个骑手,这样的话骑手的数量很难控制,对于派单来说也存在很大的压力,会造成整个骑手团队的崩溃,对应的就是可以通过线程池控制系统内的线程数量,有效的避免大量的线程池争夺CPU资源而造成堵塞...第三如果养了一个骑手团队,这样在骑手的管理上可以规范,以便提供更好的外卖服务,比如这种外卖超时,骑手打星等。对比线程池就是线程池可以提供定时、定期、单线程、并发数控制等功能。...不过Executors框架已经为我们实现了4种拒绝策略: AbortPolicy(默认):丢弃任务并抛出RejectedExecutionException异常。

    32900

    《多线程系列四》解密线程池的所作所为

    一、线程池是什么 线程池就是一个对象持有一堆线程,举个例子就是饿了么养的骑手团队。线程池就是这个团队,每个骑手都是一个线程。 二、为什么要用线程池?...假如现在商家有外卖单子,需要骑手去送单,这个时候的外卖任务就会派单给骑手,为什么要用线程池呐?...第二就是不能一个单子来了就来一个骑手,这样的话骑手的数量很难控制,对于派单来说也存在很大的压力,会造成整个骑手团队的崩溃,对应的就是可以通过线程池控制系统内的线程数量,有效的避免大量的线程池争夺CPU资源而造成堵塞...第三如果养了一个骑手团队,这样在骑手的管理上可以规范,以便提供更好的外卖服务,比如这种外卖超时,骑手打星等。对比线程池就是线程池可以提供定时、定期、单线程、并发数控制等功能。...不过Executors框架已经为我们实现了4种拒绝策略: AbortPolicy(默认):丢弃任务并抛出RejectedExecutionException异常。

    29940
    领券