小编Joe*_*e W的帖子

使用单个对象和另一个对象列表初始化列表

我想用一个对象和特定顺序的对象列表初始化一个列表.目前,我正在做:

List<MyObject> list = new List<MyObject>();
list.Add(object1); // object1 is type MyObject
list.AddRange(listOfObjects); // listOfObjects is type List<MyObject>
Run Code Online (Sandbox Code Playgroud)

我希望将其整合到初始化语句中(当然语法错误):

List<MyObject> newList = new List<MyObject>() { object1, listOfObjects };
Run Code Online (Sandbox Code Playgroud)

有没有办法简洁地做到这一点?

c# collections collection-initializer

23
推荐指数
3
解决办法
2万
查看次数

从文件输入中获取文件对象

我正在尝试使用带有jquery的react-bootstrap文件输入fileupload().使用直接jquery,我会将$('#fileUpload').prop('files')文件传递给fileupload调用.但是,我不知道如何使用react-bootstrap正确获取文件.

<Input type='file' label='Upload' accept='.txt' ref='fileUpload' buttonAfter={uploadFileButton}/>
Run Code Online (Sandbox Code Playgroud)

react-bootstrap

14
推荐指数
4
解决办法
3万
查看次数

react-bootstrap ButtonGroup作为单选按钮

我正在尝试将一组react-bootstrap按钮组成一个单选按钮组.我可以使用带有<input type="radio">元素的bootstrap轻松完成此操作,但无法弄清楚如何使用react-bootstrap执行此操作.以下代码允许用户选择每个按钮,而不是只选择一个按钮.

JS:

const operationButtons = (    
  <ButtonGroup>
    <Button active>Radio 1</Button>
    <Button>Radio 2</Button>
  </ButtonGroup>
);

React.render(operationButtons, document.getElementById('operationButtonsDiv'));
Run Code Online (Sandbox Code Playgroud)

HTML:

<div name="operationButtonsDiv" id="operationButtonsDiv" data-toggle="buttons"/>
Run Code Online (Sandbox Code Playgroud)

react-bootstrap

13
推荐指数
4
解决办法
2万
查看次数

如何处理Word DocumentChange事件,因为在加载时不会触发NewDocument事件

Microsoft Word首次加载时,不会触发NewDocument和DocumentOpen事件.当Word的一个实例已经打开并且打开一个新的或现有的文档时,这些事件就会被激活.

我看到的建议是处理DocumentChange事件(在Word加载时始终触发)而不是其他两个事件.

我的问题是我该如何解决这个问题?DocumentChange事件没有任何参数,那么我怎么知道刚刚打开文档(新文档还是现有文档)?

另外,我已经在DocumentChange事件中有逻辑,并且对新文档和现有文档的处理是不同的,所以我不能只将所有代码都放入事件中.

private void ThisAddIn_Startup(object sender, System.EventArgs a)
{
  this.Application.DocumentChange += new ApplicationEvents4_DocumentChangeEventHandler(Application_DocumentChange);
}

private void Application_DocumentChange()
{
  // How do I handle NewDocument or DocumentOpen?
}
Run Code Online (Sandbox Code Playgroud)

.net c# events add-in ms-word

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

如何使用C#Word Interop清除MS Office剪贴板

我正在与Word Interop一起复制整个文档以执行一些逻辑。完成后,我想清除MS Office剪贴板。这似乎是一个简单的任务……但是我不知道该怎么做。

var that = document.ActiveWindow.Selection;
that.WholeStory();
that.Copy();
// Do some logic with the selection
...
// Now I want to clear the MS Office clipboard.
Run Code Online (Sandbox Code Playgroud)

注意1: Clipboard.Clear()仅清除系统范围的剪贴板,而不清除MS Office的剪贴板。

注意2:我意识到复制文档不是使用Document对象的最佳方法,一旦找出了这个问题,我将致力于更好的逻辑。

c# clipboard ms-word office-interop

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

使C#ParallelEnumerable.OrderBy稳定排序

我正在使用它们的整数id排序对象列表OrderBy.我有一些具有相同id的对象,需要排序才能保持稳定.

根据微软的文档,并行化OrderBy并不稳定,但有一种实现方法可以使其稳定.但是,我找不到这样的例子.

var list = new List<pair>() { new pair("a", 1), new pair("b", 1), new pair("c", 2), new pair("d", 3), new pair("e", 4) };
var newList = list.AsParallel().WithDegreeOfParallelism(4).OrderBy<pair, int>(p => p.order);

private class pair {
  private String name;
  public int order;

  public pair (String name, int order) {
    this.name = name;
    this.order = order;
  }
}
Run Code Online (Sandbox Code Playgroud)

c# linq sorting parallel-processing plinq

4
推荐指数
1
解决办法
3809
查看次数

为什么 Microsoft Word 会为已打开的文档触发 DocumentOpen 事件

我有一个使用 VSTO 和互操作的 Microsoft Word 插件。如果DocumentOpen为已经打开的文档触发事件,我的代码就会出现问题。我已经能够通过打开文档 doc1、打开另一个文档 doc2,然后再次尝试打开 doc1 来一致地复制这一点。

Doc1 显然已经打开,但再次为 doc1 触发 DocumentOpen 事件。这是一个预期的设计,如果是,是否有一种简单的方法可以判断是否正在为已打开的文档触发事件?

private void ThisAddIn_Startup(object sender, System.EventArgs a)
{
  try
  {
    this.Application.DocumentOpen += 
      new MSWord.ApplicationEvents4_DocumentOpenEventHandler(Application_DocumentOpen);

  }
}

private void Application_DocumentOpen(MSWord.Document document)
{
  HandleOpenedDocument(document);
}
Run Code Online (Sandbox Code Playgroud)

c# vsto add-in office-interop

3
推荐指数
1
解决办法
4533
查看次数

编辑Word文档范围的文本将删除段落格式

我正在将Office Interop与MS Word(Microsoft.Office.Interop.Word)和Microsoft.Office.Tools.Word一起使用,以修改Word加载项中的Word文档。我有一个包含要编辑的特定文本的范围。

当我更新Text对象时,将重置Range的段落格式,特别是Alignment和LeftIndent。我可以将Alignment和LeftIndent保存在临时变量中并进行重置,但这并不理想。有没有一种方法可以阻止ParagraphFormat重置,如果没有,是否还有其他我可能忘记保存的属性(我刚刚意识到段落间距之前和之后也都会重置...)。

Microsoft.Office.Interop.Word.Range range = myObject.range;
var oldAlignment = range.ParagraphFormat.Alignment;
var oldLeftIndent = range.ParagraphFormat.LeftIndent;

range.Text = "new text";
range.ParagraphFormat.Alignment = oldAlignment;
range.ParagraphFormat.LeftIndent = oldLeftIndent;
Run Code Online (Sandbox Code Playgroud)

编辑:我只是尝试将ParagraphFormat保存为临时变量,然后使用该变量重置格式,但是temp变量也会丢失其格式。

oldParagraphFormat = range.ParagraphFormat;
range.Text = "new text";
range.ParagraphFormat = oldParagraphFormat; // oldParagraphFormat's objects are reset
Run Code Online (Sandbox Code Playgroud)

c# vsto add-in ms-word office-interop

2
推荐指数
1
解决办法
4337
查看次数