小编Ras*_*dit的帖子

枚举中定义的项目总数

如何获取枚举中定义的项目数?

.net c# enums

298
推荐指数
8
解决办法
20万
查看次数

Monostate vs. Singleton

当人们使用Monostate模式而不是singleton来维护全局对象时,会出现什么情况?

编辑:我知道Singleton和Monostate模式是什么.在很多场景中也实现了Singleton.只想知道需要实现MonoState模式的场景(案例).

例如.我需要在我的Windows窗体应用程序中维护每个屏幕的列列表.在这种情况下,我可以使用Singleton Dictionary.但是,我在静态全局var中存储了一个List,我想提供索引器(因为我需要动态地将新条目添加到列表中,如果key不存在),我可以将ScreenDetails.ScreenName指定为键并获取ScreenDetails .ColumnsTable.由于索引器无法在静态类上操作,因此我将模式更改为Monostate.

所以我想知道哪些其他场景可能迫使用户使用Monostate而不是Singletons.

language-agnostic singleton design-patterns

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

Process.Start()中的错误 - 系统找不到指定的文件

我使用以下代码来触发iexplore进程.这是在一个简单的控制台应用程序中完成

public static void StartIExplorer()
{
    var info = new ProcessStartInfo("iexplore");
    info.UseShellExecute = false;
    info.RedirectStandardInput = true;
    info.RedirectStandardOutput = true;
    info.RedirectStandardError = true;

    string password = "password";
    SecureString securePassword = new SecureString();

    for (int i = 0; i < password.Length; i++)
        securePassword.AppendChar(Convert.ToChar(password[i]));

    info.UserName = "userName";
    info.Password = securePassword;
    info.Domain = "domain";

    try
    {
        Process.Start(info);
    }
    catch (System.ComponentModel.Win32Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码抛出错误The system cannot find the file specified.运行时相同的代码而不指定用户凭据可以正常工作.我不确定为什么会抛出这个错误.

有人可以解释一下吗?

.net c# process

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

ListBox选择所有项目

单击CheckBox时,我需要选择ListBox中的所有项目.是否可以使用一行代码选择ListBox中的所有项目?或者我是否必须遍历所有项目并将其中的每一项设置为true?

谢谢 :)

c# listbox .net-2.0 winforms

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

如何防止ListBox.SelectedIndexChanged事件?

我在我的C#2.0 Windows窗体应用程序中使用了一个列表框.填充列表框的方法是

    private void PopulateListBox(ListBox lb, ReportColumnList reportColumnList)
    {
        lb.DataSource = reportColumnList.ReportColumns;
        lb.DisplayMember = "ColumnName";
        lb.ValueMember = "ColumnName";
    }
Run Code Online (Sandbox Code Playgroud)

但是,当它执行该方法时,它也会调用列表框的SelectedIndexChanged事件处理程序,即使我没有在上面的方法中设置所选索引.如何阻止为上述代码调用SelectedIndexChanged事件处理程序?

我希望仅在用户在ListBox中进行选择时才调用该事件.或者是否有任何其他事件仅供用户使用鼠标点击选择列表框项目?

另外,即使用户单击列表框中的空白区域,也会触发SelectedIndexChanged事件.所以我想知道它与MouseClick事件的不同之处是什么?

.net c# winforms

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

存储过程的使用是不好的做法?

我们有一个用C#编写的应用程序,它连接到ms sql服务器.我们使用为每个数据库调用创建一个存储过程,但后来我们注意到使用存储过程给我们带来了很大的缺点,如果我们更改数据库,我们不知道需要更新哪些存储过程.

现在我想知道使用存储过程是坏事还是好事?

c# database sql-server database-design stored-procedures

12
推荐指数
4
解决办法
5723
查看次数

如何防止数据网格视图的排序

我在Windows窗体上使用DataGridView.它只显示两列.默认情况下,在运行应用程序时,如果单击列标题,则datagridview将根据该列进行排序.但是,我想完全禁用网格视图上的排序.我无法找到可以设置sorting = false的属性,或类似的东西.

谁能告诉我如何禁用网格视图排序?

谢谢 :)

编辑:

我想我可以将各列设置为NotSortable(下面的贴出答案).可以在网格视图级别而不是单个列中完成吗?

winforms c#-2.0

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

DataGridView捕获用户行选择

我在处理选择时遇到问题DataGridView.我的网格视图包含金额列.表单上有一个文本框,它应显示所选网格视图行的总量.因此,当用户选择/取消选择gridview行并相应地计算(加/减)量时,我需要捕获事件.我找到了两种方法:

  1. 使用RowEnterRowLeave事件.当用户选择/取消选择单行时,这些工作正常.但是,当用户一次选择多行时,该事件仅针对最后一行触发.因此,从我的总金额中,只添加/减去最后一行中的金额.从而使我的结果错误.

  2. 使用该RowStateChanged事件.这适用于多行.但是,如果用户滚动数据网格,事件将被触发事件.

有谁处理过这种情况.我想知道我应该使用哪个datagrid事件,以便我的代码仅在用户选择/取消选择包含多行的行时执行.

c# winforms

11
推荐指数
3
解决办法
6万
查看次数

处理Windows应用程序的结束过程

是否可以在同一个Windows应用程序本身内捕获Windows应用程序的任务管理器结束进程?我正在使用一个C#2.0 win应用程序,我希望在结束进程发生时进行一些数据库处理(在数据库中将标志从'Y'更改为'N').

.net c# event-handling

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

为什么异步委托方法需要调用EndInvoke?

为什么委托需要在方法触发之前调用EndInvoke?如果我需要调用EndInvoke(它阻塞线程)那么它真的不是异步调用吗?

这是我试图运行的代码.

class Program
    {
        private delegate void GenerateXmlDelegate();

        static void Main(string[] args)
        {
            GenerateXmlDelegate worker = new GenerateXmlDelegate(GenerateMainXml);
            IAsyncResult result = worker.BeginInvoke(null, null);
        }

        private static void GenerateMainXml()
        {
            Thread.Sleep(10000);
            Console.WriteLine("GenerateMainXml Called by delegate");
        }
    }
Run Code Online (Sandbox Code Playgroud)

c# delegates asynchronous

10
推荐指数
2
解决办法
7378
查看次数