none
.net中怎样实现撤销操作? RRS feed

  • 问题

  • 我在做一个图片处理软件,里面的每一步操作如果都要写一个撤销的函数很难,有什么好的方法呢?新手求具体代码,谢谢!
    2012年8月1日 3:01

全部回复

  • 你好, 

    你可以这样试试, 将你顺序操作放到一个栈里面, 当user正常操作时, 就把这次操作压入栈中,当用户需要撤销时, 将最顶端的操作出栈. 这样你就不需要写撤销函数了.

    当最后用户需要确认修改后,将栈中的操作从底到顶重新做一遍,然后保存.

    希望有用.


    Mike Feng
    MSDN Community Support | Feedback to us
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年8月2日 6:42
    版主
  • 你好, 

    你可以这样试试, 将你顺序操作放到一个栈里面, 当user正常操作时, 就把这次操作压入栈中,当用户需要撤销时, 将最顶端的操作出栈. 这样你就不需要写撤销函数了.

    当最后用户需要确认修改后,将栈中的操作从底到顶重新做一遍,然后保存.

    希望有用.


    Mike Feng
    MSDN Community Support | Feedback to us
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    有些懂了,但是怎样把顺序操作放到一个栈里面,能有具体一点的代码示例吗?十分感谢! 

    新手上路,大神指点!

    2012年8月8日 3:57
  • 这个就是 栈类 : http://msdn.microsoft.com/zh-cn/library/3278tedw.aspx

    尽量试着自己写写吧,若遇到问题,欢迎跟帖!

     

    Mike Feng
    MSDN Community Support | Feedback to us
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年8月8日 4:08
    版主
  • 你好,我在写撤销的操作遇到了问题:

    写了个栈类Stack<Bitmap^>^images = gcnew Stack<Bitmap^>();做为类的全局变量,但是编译出错:

    1、只有静态成员才可以做为全局变量。

    2.我明明using了namespace Collections::Generic,还是说Stack不明确的符号?

    我想把每一步操作后的bitmap都入堆栈,撤销再Pop();


    新手上路,大神指点!

    2012年8月16日 3:55
  • >>1、只有静态成员才可以做为全局变量。

    原话是什么?不可能只有静态成员才可以做全局变量.

    >>2.我明明using了namespace Collections::Generic,还是说Stack不明确的符号?

    同上,原话是什么?


    Mike Feng
    MSDN Community Support | Feedback to us
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年8月16日 4:17
    版主
  • >>1、只有静态成员才可以做为全局变量。

    原话是什么?不可能只有静态成员才可以做全局变量.

    >>2.我明明using了namespace Collections::Generic,还是说Stack不明确的符号?

    同上,原话是什么?


    Mike Feng
    MSDN Community Support | Feedback to us
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    可视化.net\大作业\大作业\Form1.h(24): error C2872: “Stack”: 不明确的符号
    1>          可能是“c:\program files (x86)\reference assemblies\microsoft\framework\.netframework\v4.0\system.dll : System::Collections::Generic::Stack”

    1>d:\我的文档\可视化.net\大作业\大作业\Form1.h(24): error C3845: “大作业::Form1::images”: 只有静态数据成员才可以在 ref 类 或值类型内部初始化


    新手上路,大神指点!

    2012年8月16日 5:08
  • 不初始化就可以了,但是第二个还没解决

    新手上路,大神指点!

    2012年8月16日 5:09
  • 那看看你有没有添加这个reference。 在工程的reference文件夹里找。

    Mike Feng
    MSDN Community Support | Feedback to us
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年8月22日 14:19
    版主