小编Cla*_*ack的帖子

如何获得Timer Elapsed事件中发生的异常?

我正在使用Windows窗体应用程序并且使用System.Timers.Timer来定期检查数据库中的数据.

如何将计时器Elapsed事件处理程序中发生的异常传递到主应用程序中?如果我使用下面的代码,异常会被"吞噬",主应用程序永远不会得到它(即使我有ThreadException和UnHandledException的处理程序).

// Main Form
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

// Manager class
private System.Timers.Timer _timer;

    void _timer_Elapsed(object sender, ElapsedEventArgs e)
    {
        try
        {
            doSomeDatabaseActions();
        }
        catch (Exception ex)
        {
            throw new ApplicationException("How do I get this error back into main thread...", ex);
        }
    }
Run Code Online (Sandbox Code Playgroud)

c# multithreading timer

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

如何在数据绑定期间自定义datagridview中的数据格式

我正在寻找一种格式化DataGridViewTextBoxColumn的方法,以便在数据绑定期间格式化数据表的值.例如,我有一个CompanyName属性,当数据绑定发生时,我需要从CompanyName获取前5个字母.

我可以挂钩不同的DataGridView事件(例如RowsAdded)并遍历所有行并执行操作,但我想找到更复杂的方法来执行此操作.由于我已决定使用数据绑定,因此循环数据并对其进行修改有点违背了数据绑定概念.

我所追求的是,​​如何做到如下,但添加自定义格式逻辑:

dataGridView1.Columns[colSomeDate.Index].DataPropertyName = "SomeDate";
colSomeDate.DefaultCellStyle.Format = "yyyy";
Run Code Online (Sandbox Code Playgroud)

我想我应该实现IFormatProvider,但我不太明白我应该如何实现它.

dataGridView1.Columns[companyName.Index].DataPropertyName = "CompanyName";
companyName.DefaultCellStyle.FormatProvider = new ShortText(); // ShortText should implement IFormatProvider
Run Code Online (Sandbox Code Playgroud)

c# data-binding format datagridview winforms

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

如何从多行文本中仅取第一行

如何使用正则表达式仅获取第一行多行文本?

        string test = @"just take this first line
        even there is 
        some more
        lines here";

        Match m = Regex.Match(test, "^", RegexOptions.Multiline);
        if (m.Success)
            Console.Write(m.Groups[0].Value);
Run Code Online (Sandbox Code Playgroud)

c# regex

14
推荐指数
2
解决办法
9780
查看次数

单实例窗口形成应用程序以及如何获取它的参考?

我有一个Windows窗体应用程序,当时只允许一个实例运行.我已经使用Mutex实现了Singleton.应用程序必须可以从命令行启动(带或不带参数).应用程序由脚本启动和退出.用户不能对其采取任何行动.

因此,应用程序的目的是简单的"指标"应用程序,它将为最终用户显示一些视觉和图形信息.最终用户无法对其进行任何操作,只需查看即可.它是Windows窗体应用程序,因为视觉和图形外观是相对容易的实现(你可以得到它最顶层,无边框等).

简单地说:当有人试图用退出命令行参数运行相同的应用程序时,如何退出当前运行的应用程序?

bool quit = (args.Length > 0 && args[0] == "quit") ? true : false;
using (Mutex mutex = new Mutex(false, sExeName))
{
    if (!mutex.WaitOne(0, true)) 
    {
        if (quit)
        {
            // This is the tricky part?
            // How can I get reference to "previous" launced 
            // Windows Forms application and call it's Exit() method.
        }
    } 
    else 
    {
        if (!quit)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# singleton mutex winforms

5
推荐指数
2
解决办法
7998
查看次数

如何在Vista中读取注册表分支HKEY_LOCAL_MACHINE?

我将应用程序设置存储在HKEY_LOCAL_MACHINE\SOFTWARE\MyCompany分支下.不同用户的设置必须相同,这就是设置不在HKEY_CURRENT_USER下的原因.注册表值在使用应用程序期间读取.

现在,在Windows Vista中,由于UAC,您不能再使用以下代码来读取注册表值:

RegistryKey myKey = Registry.LocalMachine.CreateSubKey
        ("SOFTWARE\\MyCompany\\MyAppName");
Run Code Online (Sandbox Code Playgroud)

如何在我的代码(C#)中读取LocalMachine分支的值?

c# registry windows-vista

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

知道内容类型时如何获得正确的文件扩展名

我有一个包含文件数据的byte [].数组可以包含几种不同文件类型的数据,如xml,jpg,html,csv等.

我需要将该文件保存在磁盘中.

我正在寻找ac#代码,以便在您了解内容类型时找到正确的文件扩展名,但不确定文件扩展名?

c# content-type file

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