小编Bre*_*eze的帖子

C#COM Office Automation - RPC_E_SYS_CALL_FAILED

我正在编写一个充当PowerPoint 2007插件的C#程序.在某些机器上,对PowerPoint对象模型的一些调用会抛出一条COMException消息RPC_E_SYS_CALL_FAILED.关于如何处理此错误或如何避免错误,我找不到任何具体建议.从谷歌搜索它看起来与消息队列或单线程公寓有关.还是我离开了?

错误消息的示例是:

系统调用失败.(来自HRESULT的异常:0x80010100(RPC_E_SYS_CALL_FAILED))
在Microsoft.Office.Interop.PowerPoint._Presentation.get_FullName()

不幸的是,问题出现在客户端的机器上,所以我没有简单的方法来调试它!我是否应该在收到此错误时重试呼叫?

任何建议,以帮助我解决这个问题将不胜感激!

c# com ms-office

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

如何使用ComboBox的SelectedIndexChanged-Event

我有一个ComboBox有两个只读值:白色融合和银色融合.
如何基于在ComboBox中选择每个方法来获得正确的运行方法?这些方法只是从SQL表中提取Integer并将其放入TextBox中.

private void cboOilVehicle_SelectedIndexChanged(object sender, EventArgs e)
{
    if (cboVehicle.SelectedIndexChanged == "White Fusion")
    {
        whiteFusionOil();
    }
    else
    {
        silverFusionOil();    
    }
}
Run Code Online (Sandbox Code Playgroud)

c# combobox winforms c#-4.0

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

Interop.Outlook不会拖放清除选定的邮件

我有一个可以放邮件项目的控件,工作正常,但无法清除选择/项目。

例如:我将邮件1拖放->邮件1在我的列表中从列表中删除邮件1返回Outlook并拖放邮件2
邮件2出现在我的列表中,但邮件1也已恢复!我发现了很多相关的帖子,Marshal.ReleaseComObject但我想我做得不好?

规格:VS2010、4.0框架。Windows 7操作系统,Outlook 2010

这是我的代码的一部分:

调用我的Save方法:

ElseIf e.Data.GetDataPresent("FileGroupDescriptor") Then
    Try
        Dim SafeSaveMethod As New dlgCallSaveMails(AddressOf SaveMailsFromSelection)
        Me.BeginInvoke(SafeSaveMethod, Me.FileData.Pad)
Run Code Online (Sandbox Code Playgroud)

Save方法:

Private Sub SaveMailsFromSelection(_path As String)
    ' File uit Outlook
    Dim x As Integer
    Dim xitmndx As Integer = 0
    Dim DestFile As String
    Dim oOutLook As New Outlook.Application
    Dim oExplorer As Outlook.Explorer
    Dim oSelection As Outlook.Selection
    Dim strFile As String

    oExplorer = oOutLook.ActiveExplorer
    oSelection = oExplorer.Selection
    Dim currentFolder As MAPIFolder = oExplorer.CurrentFolder
    Dim …
Run Code Online (Sandbox Code Playgroud)

vb.net drag-and-drop outlook-addin outlook-2010

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

如何检查是否会举起活动?

如何检查VB.NET中是否会引发事件?我似乎能够在C#中完成它,但在VB中却没有,即使我使用相同的语法.

这是我的VB.NET语法(返回错误)

If [EVENT] IsNot Nothing Then
End If
Run Code Online (Sandbox Code Playgroud)

这是我的C#语法(完美运行)

If([EVENT] != null) //If an event is not null(nothing)
{
}
Run Code Online (Sandbox Code Playgroud)

这是VB代码返回的错误

"[EVENT]是一个事件,不能直接调用.使用'RaiseEvent'语句来引发事件."

vb.net events

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

如何获取wpf按钮的父母的父母

我想得到一个Button的父母的父母.我能够让父母使用

Dim tempB As Button = CType(sender, Button)
Dim g1 As Grid = CType(tempB.Parent, Grid)  
Run Code Online (Sandbox Code Playgroud)

(在我的点击处理程序中).但如果我这样做

Dim g2 As New Object
g2 = g1.Parent

tempB.Content = g2.GetType 
Run Code Online (Sandbox Code Playgroud)

我得到了 NullReference Exception

vb.net binding parent-child wpf-controls

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

在MouseOver上更改TabControl的SelectedTab

我有一个Windows窗体项目TabControl.

有没有人知道如何改变SelectedTab你用指针悬停在它上面的时间?

c# mouse tabcontrol winforms

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

如何在Crystal Reports中对齐文本以进行对齐?

我有一个如下文字.

ABC agrees to provide programming services for ABI ?("?CLIENT?") ?as described below under
"?Programming Services?" ?for <u>which CLIENT is to pay</u> a rate described in Attachment A.
Run Code Online (Sandbox Code Playgroud)

应该强调该文本,并且应该证明整个文本是合理的.我用TextInterpretationas 的公式字段HTMLText.文字有下划线,但没有正确理由.

我尝试使用TextObject,这是合理的,但所需的文字没有加下划线.请告诉我如何强调和证明文本.

formatting text crystal-reports

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

INSERT INTO存储过程的输出

我正在编写一个存储过程,我首先在表中插入一个新行.然后,另一个查询需要此查询生成的ID.是否可以使用OUTPUT访问prevoisly生成的ID?

这是我到目前为止所做的,而且几乎猜测它没有用

ALTER PROCEDURE [dbo].[addApp]

      @Name varchar(50) 
    , @logoUrl varchar(150)
    , @siteUrl varchar(150)
    , @userId int
    , @canvasWidth int
    , @canvasHeight int

AS
DECLARE @tempId INT
SET @tempid = INSERT INTO AppInfo (name, logoUrl, userId) 
              OUTPUT inserted.id 
              VALUES(@Name, @logoUrl, @userId);
INSERT INTO CanvasApps (id, siteUrl, canvasWidth, canvasHeight)
OUTPUT inserted.id
VALUES(@tempid, @siteUrl, @logoUrl, @userId);
Run Code Online (Sandbox Code Playgroud)

sql sql-server stored-procedures

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

只有水平应该出现垂直和水平滚动条

我有一种情况,当我Form水平缩小时,水平和垂直ScrollBar都会出现.我创建了一个新的WinForms项目来复制行为,这里是我使用的设置.

  1. 添加TabControlForm,设置DockFill
  2. 添加TableLayoutPanelTabPage
  3. 设置DockFill,使用一行和一列,设置AutoScroll为"true"
  4. 将行和列大小设置为 AutoSize
  5. a添加LabelTableLayoutPanel,其文本设置为东西长
  6. 运行应用程序,Form水平收缩
  7. 请注意,水平和垂直ScrollBar都会出现

这不是一个主要问题,但感觉有点破碎,一段时间后看起来很烦人.我觉得有些东西没有正确调整大小.我的猜测是水平Scrollbar出现,触发了TableLayoutPanels ScrollBars而不是缩小TableLayoutPanel以适应新的垂直空间.

我已经尝试使用标签页的AutoScroll设置true,并得到了相同的结果.

任何见解将不胜感激.


编辑:

我测试了相同的设置只是一个Panel,Dock设置Fill,AutoSize并设置为GrowAndShrink,AutoScroll上.相同的步骤触发水平,但不垂直ScrollBar.

c# scroll resize winforms

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

将控件添加到 TableLayoutPanel 的快速方法

我必须动态地添加很多Control对象TableLayoutPanel,这需要花费大量时间。我还需要能够通过 的行和列索引访问控件,TableLayoutPanel反之亦然。

TableLayoutPanel.Controls有(据我所知)3 种添加Control对象的方法:

  • .Add(Control) - 继承,位置为 -1,-1 与 .GetCellPosition(Control)
  • .Add(Control, column, row) - 位置和索引是正确的,但可能有点慢?
  • .AddRange (Control[]) - 继承的,更快的,显示的位置是正确的(每个单元格都被填充,如果有必要,在之后设置列跨度),但位置是-1,-1 .GetCellPosition(Control)

有没有一种方法结合的优势.Add(Control, column, row.AddRange(Control[]),即大量的添加Control对象快的TableLayoutPanel同时仍然能够获得的位置Control编程?


编辑以包含评论中的一些信息:

  • 添加了多达 1000 个控件
  • 我已经使用SuspendLayout()ResumeLayout()
  • TableLayoutPanel需要约2秒至负载。根据分析器,大约 50% 的时间花在添加控件上,20% 的时间花在添加控件上ResumeLayout()

编辑:MCVE
我的原始代码更复杂,但这是TableLayoutPanel添加控件花费大部分时间(2/3)的示例。我正在寻找一种方法来加快速度。

public class FormTLPTest : Form
{
    public FormTLPTest()
    {
        Height = 800;
        Width = 800;

        TableLayoutPanel tlp = …
Run Code Online (Sandbox Code Playgroud)

.net c# tablelayoutpanel winforms

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