小编Ses*_*ame的帖子

以只读方式打开文件

在C#WinForms应用程序中,我使用System.IO.Diagnostics.Process.Start(fileName)来打开文件.文件类型可以是.doc,.docx,.xls,.xlsx,.csv,.pdf或.txt.

有没有办法强制这些文件以只读方式打开?

c# readonly winforms

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

使用C#查找字符串中的特定模式

我试图用C#查找并删除字符串中的特定模式.

模式是星号,后跟任意数量的数字,后跟.txt

示例字符串:

  1. 测试*123.txt
  2. 测试2*1.TXT
  3. 测试*1234.txt3
  4. TEST4*12.txt123

鉴于这些例子,期望的结果将是:

  1. test("*123.txt"已删除)
  2. test2("*1.txt"已删除)
  3. test3("*1234.txt"已删除)
  4. test4123("*12.txt"已删除)

如何实现这一目标?

c# regex string

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

按分组获取数据表中的记录数

我有一个包含以下数据的DataTable:

Salesman---ClientID
Bob--------1
Bob--------2
Bob--------3
Tom--------4
Joe--------5
Joe--------6
Tim--------7
Tim--------8
Run Code Online (Sandbox Code Playgroud)

由此,我想了解每个推销员有多少客户.在这种情况下:

Salesman---CountOfClients
Bob--------3
Tom--------1
Joe--------2
Tim--------2
Run Code Online (Sandbox Code Playgroud)

此程序正在读取包含此数据的文本文件,并且未连接到数据库,因此SQL不是一个选项.

使用C#,我如何才能达到预期的效果?

c# datatable count

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

循环访问TabControl中的控件

我正在寻找一种方法来循环tabcontrol的特定选项卡上的控件.例如,我有一个带有以下选项卡的tabcontrol:

汽车,宠物,行政

在每个选项卡上都有几个控件来显示/编辑/保存数据等.在"保存"按钮上,我想循环浏览该特定选项卡的控件,以检查是否已填写所有必填字段.

因此,如果我在"汽车"选项卡上并单击"保存",我只想通过"汽车"选项卡上的控件循环,而不是"宠物"或"管理"选项卡.

怎么能达到这个效果?

c# foreach loops tabcontrol winforms

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

将DateTime转换为格式为YYYYMMDD的字符串

我在SQL Server 2008中将出生日期存储为日期时间,如下所示:

2010-04-25 00:00:00.000
Run Code Online (Sandbox Code Playgroud)

使用C#将这个转换并格式化为具有格式的字符串的最佳方法是什么YYYYMMDD?

最后,我需要的只是一个字符串:

20100425
Run Code Online (Sandbox Code Playgroud)

任何帮助是极大的赞赏!

c# sql-server string formatting datetime

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

异常处理帮助

我已经编写并测试了一个WinForms应用程序,一切都在我的机器上工作正常(陈词滥调,我知道).当我创建一个安装项目并将其安装在同事的机器上时,他收到以下消息:

   ************** Exception Text **************
   System.IndexOutOfRangeException: There is no row at position 0.
   at System.Data.RBTree`1.GetNodeByIndex(Int32 userIndex)
   at System.Data.RBTree`1.get_Item(Int32 index)
   at System.Data.DataRowCollection.get_Item(Int32 index)
   at MyApp.MainForm.MainForm_Load(Object sender, EventArgs e)
   at System.Windows.Forms.Form.OnLoad(EventArgs e)
   at System.Windows.Forms.Form.OnCreateControl()
   at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   at System.Windows.Forms.Control.CreateControl()
   at System.Windows.Forms.Control.WmShowWindow(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   at System.Windows.Forms.ContainerControl.WndProc(Message& m)
   at System.Windows.Forms.Form.WmShowWindow(Message& m)
   at System.Windows.Forms.Form.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Run Code Online (Sandbox Code Playgroud)

在处理像这样的例外情况时,我会承认我是初学者.该文本对我来说没有多大意义,我不确定调试它的最佳方法,因为我无法在我的机器上发生错误.

任何人都可以告诉问题是什么,或建议我调试这个问题的最佳方法?任何帮助是极大的赞赏!

c# debugging exception winforms

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

Excel时间论坛

我试图在时间表上找出输入/输出时间之间的差异来计算工作小时数.

我有以下数据:

----A----------B-----------C----------D-------
----Time In----Time Out----Time In----Time Out
1---11:15 AM---12:05 PM----1:05 PM----1:10 PM
2---1:05 PM----1:20 PM-----2:20 PM----4:00 PM
3---11:35 PM---12:05 AM----1:05 AM----1:30 AM
4---1:20 PM----2:20 PM------------------------
Run Code Online (Sandbox Code Playgroud)

这些单元格都格式化为时间(HH:MM AM/PM)

我使用以下公式来计算工时:

=(SUM(B1-A1)*24)+(SUM(D1-C1)*24)
Run Code Online (Sandbox Code Playgroud)

该公式产生以下结果:

----A----------B-----------C----------D-----------E----------
----Time In----Time Out----Time In----Time Out----TOTAL HOURS
1---11:15 AM---12:05 PM----1:05 PM----1:10 PM-----0.92-------
2---1:05 PM----1:20 PM-----2:20 PM----4:00 PM-----1.92-------
3---11:35 PM---12:05 AM----1:05 AM----1:30 AM-----(23.08)----
4---1:20 PM----2:20 PM----------------------------1.00-------
Run Code Online (Sandbox Code Playgroud)

第1,2和4行正常显示,但第3行显示错误.它应该是.92 NOT -23.08.我知道这种情况正在发生,因为公式无法判断B列(上午12:05)是否在第二天.

不幸的是,添加日期不是一个选项......仅限时间.可以编写一个公式来解决这个限制吗?

excel date excel-formula

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

foreach语句不能对'int'类型的变量进行操作,因为'int'不包含'GetEnumerator'的公共定义

我正在尝试使用Entity Framework来执行存储过程来填充列表,但是因为其中一个存储的proc参数是int而遇到了问题.

这是我的代码:

string param1 = "param1";
int param2 = 1;

List<MyEntity> myEntities = new List<MyEntity>();

using (MyEntities ctx = new MyEntities())
{
    foreach(MyEntity myEntity in ctx.FindMyEntity(param1, param2)    
    {
        myEntities.Add(myEntity);
    }
}
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:

foreach语句不能对'int'类型的变量进行操作,因为'int'不包含'GetEnumerator'的公共定义

我有一个几乎完全相同的代码片段,但第二个参数是一个字符串.它工作完美,并返回预期的结果.

我可以做些什么来使用int参数工作?

c# foreach entity-framework

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

LINQ的区别和订单清单

使用Entity Framework,我有以下代码返回一个列表:

    private List<string> MyList()
    {
        using (MyEntities ctx = new MyEntities())
        {
            var myList= from a in ctx.Foo
                        orderby a.Bar
                        select a.Bar;

            return myList.ToList();
        }
    }
Run Code Online (Sandbox Code Playgroud)

这很好用,但我想要一个不同的列表.为此,我尝试了以下代码,将.Distinct()添加到select中:

    private List<string> MyList()
    {
        using (MyEntities ctx = new MyEntities())
        {
            var myList= from a in ctx.Foo
                        orderby a.Bar
                        select a.Bar.Distinct();

            return myList.ToList();
        }
    }
Run Code Online (Sandbox Code Playgroud)

不幸的是,这个新代码会导致错误:

无法将类型'System.Collections.Generic.List(System.Collections.Generic.IEnumberable(char))'隐式转换为'System.Collections.Generic.List(string)'

然后我尝试了这个代码,它确实给了我一个独特的列表,但是现在看来orderby不起作用,因为结果是未排序的:

    private List<string> MyList()
    {
        using (MyEntities ctx = new MyEntities())
        {
            var myList= (from a in ctx.Foo
                        orderby a.Bar
                        select a.Bar).Distinct();

            return myList.ToList();
        } …
Run Code Online (Sandbox Code Playgroud)

c# linq entity-framework

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

在Property Setter中,只有在价值不同时设置才有利吗?

我想知道这段代码有什么好处:

    private int _TestID;
    public int TestID
    {
        get 
        { 
            return _TestID;
        }
        set
        {
            if(_TestID != value)
            {
                _TestID = value;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

与此:

    private int _TestID;
    public int TestID
    {
        get 
        { 
            return _TestID;
        }
        set
        {
            _TestID = value;
        }
    }
Run Code Online (Sandbox Code Playgroud)

在我看来,这是以效率的名义完成的(只有设置如果不同),但测试不会花费与初始设置一样长(或更长)的时间吗?我不确定我是否在这里遗漏了一些东西,但我很乐意听到任何评论和解释.

c# performance properties

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