如何让RichTextBox的撤销工作做得更好?
我正在尝试使用RichTextBox编写文本编辑器.我现在关心的是RichTextbox的撤消和可能重做功能. 当我开始在文本框中写作时,说1分钟!如果我调用Undo方法,那么它只是我再次相信或重置RichTextbox.我该如何使它能够做得更好,例如删除最后一个添加的单词,或者最后添加的新行...我的意思是您期望从撤消功能中获得的常规事物. (对重做也相同的计数!) 是否有属性或一些选择可以实现这一目标?还是我必须实施自己的代码? 解决方案 您可以保存最后的数据,当您要撤消时,您可以更改为现在的数据以持续数据!可以在您想要的任何时间设置最新数据! 我用richtextbox和一个按钮删除了写作文字的按钮: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using Sy
12 2024-04-23
编程技术问答社区
如何在不对程序进行重大修改的情况下实现撤销/重做操作
嗨 我将在目前正在编写的应用程序中添加新功能.我需要写一个撤消/重做.但是,我们的90%的应用程序已经准备就绪,我不知道没有情感(过多)代码实施此功能的最佳方法是什么. 解决方案 这里没有很多细节.但是,通常通过命令模式来处理撤消/重做功能.根据您的体系结构,这可能是对"命令"或重大大修的基本功能的简单重新加工. 其他解决方案 as reed copsey 说实施do/redo的最常见模式是 命令模式 .基本思想是作为命令实现操作,以插入一些类似的接口: public interface ICommand { public void Execute(); public void Undo(); } 然后,您有一个类(控制),该类(控制)整体执行所有命令,必须由一组命令组成,当您执行命令时,将每个命令推到堆栈中(通过方法),如果您要撤消操作,然后从堆栈中获取每个元素(通过pop())执行其Undo()方法. public class Control {
16 2024-04-15
编程技术问答社区
无法在TextChanged中使用撤销功能
使用textbox.undo();我收到以下错误: 开放时无法撤消或重做. 现在我明白了为什么是这种情况(因为这是一个有效的不可行事件),但是如果用户输入无效字符,我可以通过哪些事件在文本框上执行验证并撤消更改? 解决方案 您不应使用PreviewTextInput和DataObject.Pasting事件,而不是使用撤消和文本变化.在PreviewTextInput事件处理程序中,如果键入文本是无效的字符,则将e.Handled设置为true.在Pasting活动处理程序中,请致电e.CancelCommand()如果粘贴的文本无效. 这是一个仅接受数字0和1的文本框的示例: xaml:
16 2024-04-15
编程技术问答社区
如何使DataGridView立即提交编辑?
我有一个带有弹出菜单(详细信息)的主尾布布局(详细信息)和带有行的DataGridView的部分. 当datagridview中的选定行更改时,弹出窗口状态将更新,而DGV选定行中的状态应在弹出窗口更改时进行更新. . 所有这些作品 当我更改弹出窗口的值时,datagridview中的行不会立即更新.我必须选择其他行才能查看我的编辑. 我假设这是因为在选择更改之前没有进行编辑. 我的问题是:如何使更改对弹出窗口的更改立即在DataGridView中反映? 我已经尝试在弹出窗口的选择Changecmunter的处理程序中调用EndEdit(),但这没有效果.我对一种使我能够创建一个datagridview的技术感兴趣,该技术似乎一开始就没有撤消机制.理想情况下,解决方案将是通用的,并且可以移植到其他项目. 解决方案 这是发生的事情.答案是在ComboBox实例的属性中.我需要将他们的DataSourceUpdateMode从OnValidation更
26 2024-04-12
编程技术问答社区
DbContext丢弃变化而不进行处置
我有一个桌面客户端应用程序,该应用程序使用模态窗口为层次对象设置属性.由于这是一个客户端应用程序,并且对DBContext的访问不是线程的访问,因此我在主表单上使用长期运行的上下文,该上下文将传递给Modal Children. 这些模式窗口使用属性格里德显示实体属性,并且还具有取消按钮.如果修改了任何数据并按下了取消按钮,则更改反映在父级表单中(我无法处理DbContext object). 如果没有调用DbContext.SaveChanges()方法,是否有一种方法可以丢弃任何更改? 更新:实体框架版本4.4. 解决方案 如何将其包装在交易中? using(var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted
22 2024-04-11
编程技术问答社区
Git拉到错误的分支
我本人和另一个开发人员一直在将我们的作品合并并将我们的作品推向一个名为Toolwork的非主管分支.这样,我们就不会影响团队的其他成员.我的主题分支称为dpm-93,我的git工作流程是这个. # do some work git checkout DPM-93 git commit -m "did some work" # catch up git checkout toolwork git pull origin toolwork # rebase my topic branch git checkout DPM-93 git rebase toolwork # merge and push my changes git checkout toolwork git merge --no-ff DPM-93 git push origin toolwork 直到我不小心发出这些git命令 之前,这主要工作正常 git checkout toolwork git pu
34 2024-04-03
编程技术问答社区
自动工具:如何清理lighttpd项目中由"./configure "创建的文件?
我正在尝试lighttpd嵌入式Linux项目.我得到了最新的源软件包,并开始编写主Makefile,将所有配置,编译,安装(用于测试)等内容封装. ,反之亦然,我想清理每个步骤.清理后,不再有生成的文件.这对于重复测试很重要. 我想知道是否有一种方法可以完全清理生成的./configure?我不熟悉autotools的详细信息. 有任何提示? 解决方案 我个人会真正使用源控制软件的功能(您应该使用一个).这将使您独立于您的构建过程.参见例如尽管如此,Automake允许一些调整何时删除哪些文件.这具有(故意?)对自动工具生成的文件的内置限制,可以通过这种方式删除.看看大多数熟悉的定义并调整您的Makefile.am.与他们一起,您可以用 删除很多东西 make mostlyclean make clean make distclean make maintainer-clean 您将无法删除,例如Makefile或.deps/以这种方式. 至于m
14 2024-03-21
编程技术问答社区
Html文本输入撤消不起作用
我遇到了一个问题,即HTML文本框和文本区域的撤消功能(CTRL+Z和右键单击> undo)被禁用.这是在ASP.NET生成的页面上发生的,其中包含了许多Silverlight,JavaScript,Jquery和Ajax.大约90%的时间发生了,撤离运行良好的时间为10%.它仅在查看IE(8 + 9)中的页面时才发生,在Chrome,Opera和Firefox中效果很好. 对我来说,在此处发布代码并不是很实际,因为它有很多,并且问题可以埋葬在其中的任何地方.我更想知道是否有人以前遇到过这个问题,或者这是一个已知问题.谁能提出任何可能将我指向正确方向的东西? 解决方案 页面上有任何JS计时器.即使他们没有更新特定的控件,也可能导致控制历史记录.我怀疑这是IE中的错误.
18 2024-03-09
编程技术问答社区
撤销数组列表中的变化
我有一个名为"行"的行对象的数组列表.我做了自己的线课,以一些约束来绘制线条.它涉及在面板中选择两个点,并绘制连接两个点的线.每次创建一行时,都会添加到"线"中.线在面板中绘制. 我面板中的油漆功能看起来像这样: public void paintComponent(Graphics g){ super.paintComponent(g); for(final Line r:lines){ r.paint((Graphics2D)g); } } 每次在面板上单击两个点,都会创建一个新的行. class Board extends JPanel{ public void placeLine(){ Point p1,p2; JLabel l1,l2; ... lines.add(new Line(p1,p2,l1,l2)); this.repain
10 2024-03-04
编程技术问答社区
在Python中为7x7板制作一个撤销功能
我目前正在尝试编程一个名为PAH TUM的游戏.该游戏涉及一个7x7的板.对于董事会,我刚刚创建了一个列表,其中包含7个包含7个元素的列表,基本上我只是将每行列入列表,并将它们合并到一个大列表中: board = [[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]] 游戏应该具有撤消功能,这使玩家可以返回一步.我以为我只能将整个董事会附加到一个单独的列表中,然后用它来返回一步. if input == 'u' or input == 'U': board = b
6 2024-03-02
编程技术问答社区
安卓版Canvas中的撤销和重做
我正在使用private void touch_up() { mPath.lineTo(mX, mY); // commit the path to our offscreen mCanvas.drawPath(mPath, mPaint); // I enable the set drawing cache... myView.setDrawingCacheEnabled(true); // ... and I add the cache to the stack undoStack.add(myView.getDrawingCache()); indexOfUndoRedo++; // kill this so we don't double draw mPath.reset(); } 目前仅在修饰后才对堆栈进行更新,因为我仍在弄清楚如何解决此问题.当我想重做时,我会执行以下操作: private void undo() { myView = new MyView
32 2024-02-13
编程技术问答社区
如何在安卓系统中处理视图外的触摸?
我已经找到了" upo bar" 用于Android的Gmail应用程序. " undobar"基本上是在布局顶部显示的视图. 不幸的是,它还没有完成 - 它没有通过触摸栏外屏幕来拆除栏的功能. 我已经实现了FrameLayout覆盖onInterceptTouchEvent处理驳船的bar否则,但接触的动作栏无济于事. 有什么方法可以从动作栏中处理此类事件? 下面有一个图像,其中显示了" undobar".我想实现的目标来处理由红点代表的动作栏中的触摸. 解决方案 尝试覆盖您的活动的调度. dispatchTouchEvent(MotionEvent event){ int x= event.getRawX(); int y= event.getRawY(); if(/*check bounds of your view*/){ // set your views visiblity
22 2024-01-31
编程技术问答社区
内存有限时,位图编辑器的快速撤销/重做?
我正在尝试编写移动设备的位图编辑器(即Photoshop的有限版本).用户的文档由〜4个位图组成,每个尺寸约为1000x500. 我想要一个尽可能简单的稳健有效的撤消/重做系统.我的目标是撤消或重做编辑约0.2秒.我正在寻找有关当前预期方法或可以使用的一些新想法的反馈.我认为我拥有的太复杂了,所以我对继续进行谨慎,所以只知道这就是我能做的最好的事情. 我已经尝试了使用命令模式和我的撤消/重做系统的纪念品模式的组合.到目前为止,我得出的一些结论是: 我没有足够的内存,我无法写入内存以足够快地磁盘,以便在许多情况下使用纪念品来支持上一个命令上的"不执行"操作,例如如果用户很快执行几种单独的油漆笔触,我将无法存储代表用户在而无需使用户等待保存的位图. 如果我将文档还原到其初始状态并重播所有命令,则除了最后一个实现撤消的命令外,它甚至在一定数量的命令之后都太慢了,例如重播10个油漆或5个污迹中的笔触〜1s,这太迟钝了. 我可以通过定期将整个文档保存在磁盘上并在播放命
22 2024-01-22
编程技术问答社区
如何在<textarea>中执行undo/redo,一次对一个单词做出反应,一个单词一个单词,或者一个字符一个字符?
我如何一次在textarea中撤消/重做一次对1个单词的反应,逐字或字符的字符?不一次. 现在,我已经起作用了此功能,但是它对文本方面的所有单词都做出了反应,这是我的情况下功能错误的方法.我需要它可以通过单词而不是所有单词进行反应,以便它像文本编辑器一样起作用.我正在使用Chrome,我需要它以任何网络浏览器或至少用于主要浏览器的字符来逐字或字符起作用. 注意:不建议我使用可编辑的div,因为在这种情况下,我无法与页面上的其他功能一起使用.我需要,别无其他. javascript: function Undo() { document.execCommand("undo", false, null); } function Redo() { document.execCommand("redo", false, null); } html:
38 2024-01-17
编程技术问答社区
怎样才能 "撤销 "以编程方式插入文本到一个文本框中的内容?
我有一个文本方面和一个按钮.单击该按钮会导致文本插入文本中心. 是否有一种方法可以允许用户按CTRL/CMD+Z删除文本的插入并将文本方面恢复为先前状态? 解决方案 我认为,最简单的方法是利用浏览器的撤消堆栈而不是捕获事件. 要这样做,您需要为不同的浏览器使用不同的代码.幸运的是,在所有主要浏览器中,只有Firefox具有不同的方法. 在 // http://stackoverflow.com/a/9851769/529024 // Opera 8.0+ var isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0; // Firefox 1.0+ var isFirefox = typeof InstallTrigger !== 'undefined'; // Safari 3.0+ "[
26 2024-01-11
编程技术问答社区
动作脚本3 绘图应用程序的撤销和重做功能
有人可以告诉我如何撤消和重做功能吗?因此,这是我当前的动作脚本.我无法弄清楚该怎么做,并且在某些网站中看到了一些示例,该操作脚本始终在站立之下.请显示我可以做这项工作的简单方法. 对不起,语法不好... import flash.display.MovieClip; import flash.events.MouseEvent; var pen_mc:MovieClip; var drawing:Boolean = false; var penSize:uint = 1; var penColor:Number = 0x000000; var shapes:Vector.=new Vector.(); var position:int=0; const MAX_UNDO:int=10; function init():void{ pen_mc = new MovieClip(); stage.addEventListener(Mouse
20 2024-01-09
编程技术问答社区
DbContext丢弃变化而不进行处置
我有一个桌面客户端应用程序,该应用程序使用模态窗口为层次对象设置属性.由于这是一个客户端应用程序,并且对DBContext的访问不是线程的访问,因此我在主表单上使用长期运行的上下文,该上下文将传递给Modal Children. 这些模式窗口使用属性格里德显示实体属性,并且还具有取消按钮.如果修改了任何数据并按下了取消按钮,则更改反映在父级表单中(我无法处理DbContext object). 如果没有调用DbContext.SaveChanges()方法,是否有一种方法可以丢弃任何更改? 更新:实体框架版本4.4. 解决方案 如何将其包装在交易中? using(var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted
26 2024-01-02
编程技术问答社区
OpenGL ES:在像素绘制应用程序中撤消
我目前正在使用一个应用程序,该应用程序允许用户使用OpenGL ES绘制像素化图像,但我不知道如何实现撤消功能. 我该怎么办?我想到为每个像素使用图像并将其添加到数组中.基本上,我如何存储我用作像素的矩形? 解决方案 您可以尝试: NSData *data = [NSData dataWithBytes:vertexBuffer length:vertexCount * sizeof(GL_FLOAT) * 2] ; if (self.vertexBuffers == nil) self.vertexBuffers = [[NSMutableArray alloc] init]; [self.vertexBuffers addObject:data]; save every draw point to a array; if undo 清除旧buffer glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFra
22 2023-12-18
编程技术问答社区
Javascript UndoManager浏览器支持
html5规格提到了一个未漫画家,可用于查询用户编辑的文档的先前状态( http://www.whatwg.org/specs/web-apps/current-work/#undomanager ).有任何浏览器支持这一点吗?浏览器有任何支持吗? 解决方案 您可以通过将它们导航到在您的页面上进行测试在您的页面上(如果存在的话,请使用) : return typeof UndoManager !== 'undefined'; 当前支持它的浏览器受到限制. 无支持:Chrome 6.0,即8,FF 3.6 Browser Score (160) UndoManager Support -------------------------------------- IE8 19 no FF3.6 101 no Chrome 6 142 no
22 2023-12-15
编程技术问答社区
在Python中做撤销操作
首先..对不起,如果我的英语不好.这是我的第三种语言 我正在使用绘制图像并再次保存图像的油漆软件(用于评论提议) 我使用堆和wxpython. 但是我仍然在某些功能上遇到问题. 做出撤消选项的理想方式是什么? 另一个问题..当用户扩展图片时(通过放大图形框架) 线不会扩展.我如何实现. ,每当用户完成一条线并将该新图片分配给框架时,我就通过将临时图像保存到硬盘中,从而消除了所有这些问题. 撤消和重做将通过在这些图像之间切换来完成... 因此,当用户规模映像时,线路也会扩展.但这很糟糕,因为它需要大量的HDD空间(当您绘制1000行时)并且速度很慢,因为它每次用户绘制一条线时都会分配新图像 希望我的想法很清楚 有人有更好的解决方案吗? 解决方案 规范策略是使用 >.您将表示您可以作为命令对象做的事情,并且每个对象都放在堆栈上.然后,应用程序的状态由初始状态以及堆栈所具有的所有内容定义.因此,"撤消"操作只是弹出顶部堆栈项目,然后将其余项目重新申请到初始状态
32 2023-12-15
编程技术问答社区