小编Dav*_*jak的帖子

使用PDFsharp的表格和图表

我刚刚开始一个需要我写入PDF文件的项目.经过一些谷歌搜索,我决定使用看似简单的PDFsharp,但是我有一些关于绘制表格和图表的问题.

PDFsharp是编写包含表格和图表的PDF文件的不错选择吗?如果不是,您能推荐更好的选择吗?如果是的话,我在哪里可以找到关于这个主题的一些好文献?一个教程会很好(不必是一个示例项目,只是我可以用来熟悉库及其类的东西).

谁能告诉我MigraDoc的全部意义?我只是瞥了一眼,看起来对我需要的东西很完美,不过我希望得到更多关于它的信息.

c# charts pdf-generation pdfsharp

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

访问网络驱动器上的文件

背景:我有一个应用程序必须从网络驱动器上的文件读取(Z :)

这在我的办公室域中很有用,但它不能在站点上工作(在不同的域中).据我所知,域用户和网络驱动器的设置方式相同,但我无法访问客户域中的用户等.

当我无法访问网络驱动器时,我想我需要一个用户令牌.这就是我对用户进行压制的方式:

[DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
public static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
Run Code Online (Sandbox Code Playgroud)

...

const string userName = "USER";
const string pass = "PASS";
const string domainName = "VALIDDOMAIN.local"  //tried with valid domain name and with null, same result
const int LOGON32_PROVIDER_DEFAULT = 0;
const int LOGON32_LOGON_INTERACTIVE = 2;

IntPtr tokenHandle = new IntPtr(0);

bool returnValue = LogonUser(userName, domainName, pass,
            LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT,
            ref tokenHandle); …
Run Code Online (Sandbox Code Playgroud)

c# network-drive

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

以编程方式检索正在运行的服务的程序集版本

我想使用ServiceController类访问我"控制"的服务的程序集版本信息.(即我想显示"2.3.1.23"),但是我找不到有关检索装配版本的任何信息......是否有可能?

编辑:只是为了澄清......我只知道在本地计算机上运行的服务的名称.我想访问该服务的"FileVersionInfo"(更好的说服务exe),但我不知道服务exe位于何处.

c# assemblies version

10
推荐指数
1
解决办法
5354
查看次数

检查OleDbConnection状态的最佳方法

显然(MSDN)有时候OleDbConnection.ResetState()什么都不做,所以即使连接失败,OleDbConnection.State仍然会被设置为Open.我正在寻找最好的解决方法,以便当我检查连接状态时,我可以避免引发异常(只要连接在上次检查和使用尝试之间没有失败).

没有什么比每次发送"无用的"sql语句只是为了查看是否抛出异常更好的了吗?在实际使用之前,如何确保连接已打开?

c# oledb connection database-connection oledbconnection

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

C#用户无效多长时间

一些背景:我正在编写一个具有多种形式的应用程序等.用户必须登录才能使用大多数功能,这一直到目前为止工作正常.但是,现在,客户端已请求在一定量的非活动时间之后用户将被注销.问题是用户仍然可以在计算机上处​​于活动状态,而不是在我的应用程序中.为了清楚起见,我必须在用户处于非活动状态时将用户注销,即使他仍在与桌面交互.

首先我认为这很简单.只需记住上次操作的时间,在计时器中将其与当前时间进行持续比较,如果超过允许时间,则注销用户.但是我已经意识到找出最后一次动作时间可能并不那么简单......

当然我可以复制粘贴之类的东西

Program.LastActionTime = DateTime.Now;
Run Code Online (Sandbox Code Playgroud)

在每个OnChange,OnClick等事件中...但不仅因为应用程序的大小,这将是一项大量的工作......这也是一个非常糟糕的做法,我相信它会是忘记了至少一次,使整个事情变得不可靠(并且看起来很破碎,这个bug几乎不可能重现!)

那么,有更好的方法吗?

c# user-interaction

9
推荐指数
2
解决办法
3771
查看次数

静态抽象类

我需要一种方法来创建一个静态类,其中一些常量可以是特定于案例的,但是是硬编码的.

我真正想做的是有一个类,当类扩展时提供了几个常量 - 我希望'常量'是硬编码的.我想我将制作一些抽象属性并定义get {return constant; 当扩展类时.

我知道这是不可能的,所以现在我面临两个选择,我想知道什么是最好的和为什么(如果有我缺少的选项,请告诉我!)

  1. 创建一个具有可空字段的静态类,如果在调用静态方法时字段为null,则抛出异常.
  2. 放弃静态类.拥有一个带有抽象属性的非静态类,并在我需要的任何地方创建一个对象实例,即使所有功能都是静态的.

我知道这可能是主观的,并且取决于案例,但是当我考虑这个问题时我会绕圈子,并且可以通过一些外部输入来实现.加上我希望可能没有做我想做的事情,而我只是在考虑这个错误.

更新:代码:我将尝试编写一些描述我想要完成的代码.我知道这段代码不行!

想象一下,抽象类Calculation在一个dll中,被许多项目使用.所有这些功能都是相同的,只是常量因项目而异.

public abstract static class Calculation
{
    private abstract int Constant { get; }    //The constant is unknown at this time

    public static int Calculate(int inputValue)
    {
        return inputValue * Constant;
    }
}
Run Code Online (Sandbox Code Playgroud)

Calc类是在一个单独的项目中定义的,其中需要功能并且Constant已知.

public static class Calc : Calculation
{
    private override int Constant { get { return 2; }
}

...

static class Program
{
    [STAThread]
    static void Main()
    {
        //At some point:
        int …
Run Code Online (Sandbox Code Playgroud)

c# static derived-class

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

在运行时更改MenuItem标题

我有一个菜单,其中包含各种菜单项,正如您通常所做的那样.每个MenuItem(按钮)都有一个标题,我想在运行时更改该标题.在一个不是真正问题的普通按钮上,我只是打电话GetDlgItem(ID)->SetWindowText(CString);

但是我无法在菜单项上执行此操作,因为我无法将ID分配给其中任何一个."属性"编辑器中的ID字段实际上显示"无法编辑ID".

那么如何在运行时更改菜单项文本?

编辑:我已经尝试使用CMenu :: ModifyMenu但是我没有成功.我不知道如何指定要更改的按钮(元素).另外,我怀疑我将CString作为参数传递的方式的正确性.

这是我的(失败)尝试:

CString str = "Foo";
CMenu * pMenu = m_wndToolBar.GetMenu();
pMenu->ModifyMenu(1, MF_BYPOSITION | MF_STRING, 0 /*Don't know what to pass as nIDNewItem */, str);
Run Code Online (Sandbox Code Playgroud)

这(对ModifyMenu方法的调用)会抛出调试断言错误.请注意,我不知道nIDNewItem是什么.

user-interface mfc visual-studio-2003 menu menuitem

8
推荐指数
3
解决办法
4744
查看次数

检查Action是否为异步lambda

因为我可以将Action定义为

Action a = async () => { };
Run Code Online (Sandbox Code Playgroud)

我可以以某种方式确定(在运行时)动作是否异步?

c# async-await

8
推荐指数
2
解决办法
1670
查看次数

在多个线程上划分工作量

我想知道是否有人知道一篇好文章描述了将工作量分成几个线程?最好是为C#写的,但它确实是我追求的概念,所以如果它是用不同的,相似的语言编写的,那不是问题.

我有一个问题,我必须将大量的计算分成几个线程然后在一次迭代完成后对生成的数据求和(所以我需要知道所有线程都已完成),然后开始一个新的迭代,提供所有具有在最后一次迭代中生成的数据的线程(数据将在每次迭代结束之前被修改).

我希望这是有道理的,也是可能的.无论哪种方式,我都会欣赏一些关于如何解决计算大量数据分成几个线程的问题的建议(因此我可以使用多个处理器的核心).

谢谢您的回答!

c# multithreading multicore

7
推荐指数
1
解决办法
485
查看次数

连接打开时更改SerialPort的BaudRate

我正在使用SerialPort类与外部设备进行通信.我以每秒300波特的速度开始通信,但是在初始"握手"之后,我必须切换到设备指定的波特率(通常为9600 Bps).

在增加波特率之后,我一直试图继续通信,但是我不知道为什么.这引出了我的问题:改变波特率的正确方法是什么?可以在连接打开时完成,还是应该先关闭连接?

我无法在文档中找到有关此内容的任何信息......

我已经尝试了两种方式并且在两种方式都没有成功,这让我觉得我必须遗漏一些明显的东西.

c# serial-port serial-communication

7
推荐指数
2
解决办法
7245
查看次数