小编Oce*_*ans的帖子

如何清除TextBox以使默认的Undo方法仍然起作用?

我一直在寻找一段时间,并没有找到一个简单或正确的方法来解决以下问题.

我有一个多行TextBox ShortcutsEnabled = true,当然,它允许用户轻松撤消或重做使用键盘快捷键(例如Ctrl+ Z)所做的任何更改.
现在我希望实现一个清除TextBox文本但仍允许用户使用默认撤消功能撤消操作的按钮.

清除TextBox中的文本很简单:

myTextBox.Clear();  
//or 
myTextBox.Text = string.Empty;
Run Code Online (Sandbox Code Playgroud)

问题是当以这些方式替换文本时,默认撤消功能不起作用.
但是,如果用户选择所有文本(Ctrl+ A)并Delete手动命中,则TextBox将变为空,用户仍可以通过Ctrl+ 恢复已删除的数据Z.

我知道编写自己的实现Undo或者Redo可能会让我获得理想的结果,但必须采用另一种方式.
我只需要巧妙地模仿代码中手动选择all和delete方法.

这是我需要帮助的地方,我该如何实现呢?

TextBox似乎没有我可以调用的默认删除,删除替换文本功能.
作为一个概念证明,我尝试使用Cut方法(或Ctrl+ X)来实现它,它实际上做了我想要的.唯一的缺点是,它取代了潜在重要的剪贴板数据.我也尝试过这方面的解决方法,但在做了一些研究后,似乎没有任何"正确"或至少"很好"的方法来恢复剪贴板数据.

var cbData = Clipboard.GetText();
myTextBox.SelectAll();
myTextBox.Cut();
Clipboard.Clear();
if(!string.IsNullOrEmpty(cbData))
     Clipboard.SetText(cbData);
Run Code Online (Sandbox Code Playgroud)

TLDR;

如何以与用户手动相同的方式从代码中删除TextBox中的文本?那么Undo仍然可以调用默认方法来恢复已删除的文本?

.net c# winforms

9
推荐指数
1
解决办法
1033
查看次数

在 RDLC 报告中处理数组和聚合

我正在尝试使用来自 VS2012 的 RDLC 创建报告。
我从我的对象创建了一个数据集,其中包含要在报告中显示的所有数据。然而,这个对象有一些属性是数组,其他属性是自定义对象(聚合)。

public class myObject2Report {

private Double [] myResults;
private FakeDataObject fake;

//...
}
Run Code Online (Sandbox Code Playgroud)

问题是我无法将数组索引单独添加到报告中的表中,也无法从我的 FakeDataObject 添加子字段。我在报表设计视图中尝试过,但没有成功,现在我正在寻找一些信息来创建一个表达式来做到这一点:

=Fields!myResults[0].Value
=Fields!myResults[1].Value
//...
Run Code Online (Sandbox Code Playgroud)

或者

=Fields!FakeDataObject.subField1.Value
=Fields!FakeDataObject.subField2.Value
//...
Run Code Online (Sandbox Code Playgroud)

对此主题的任何帮助将不胜感激。

c# reportviewer rdlc visual-studio-2012

5
推荐指数
1
解决办法
1863
查看次数

标签 统计

c# ×2

.net ×1

rdlc ×1

reportviewer ×1

visual-studio-2012 ×1

winforms ×1