小编Pet*_*ter的帖子

DataGridView在开头没有选定的行

在我的WinForms中,我有DataGridView.我想一次选择完整行,所以我设置SelectionModeFullRowSelect.现在我有问题,因为在开始时我的表单为第一行加下划线(所选行的集合为空,第一行未选中但仅加下划线).我尝试了很多东西,比如:

    private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
    {
        dataGridView1.ClearSelection();
    }
Run Code Online (Sandbox Code Playgroud)

一切都失败了,因为事实上没有选择.

我该怎样摆脱这个下划线?

谢谢你的帮助!

.net c# datagridview winforms

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

为什么我必须在对象初始值设定项中将@放在`Name`前面?

自从@解决了我遇到的问题以来,此时纯粹是好奇心,但为什么Name特别?

我有一个EF实体属性叫Name...如果我不把它@放在前面Name,我没有得到任何类型的错误,但Name对象的属性没有被分配.如果我放入@Name对象初始化程序,它会Name正确分配:

a = new Author
{
    Id = Guid.NewGuid().ToString(),
    @Name = "Jason Hater" // Apparently "Name" is quasi-reserved or something...?!?
};
Run Code Online (Sandbox Code Playgroud)

我检查了生成的代码,它只是命名为Name:

[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
[DataMemberAttribute()]
public global::System.String Name
{
    get
    {
        return _Name;
    }

    //...
}
Run Code Online (Sandbox Code Playgroud)

所以,Name没有列为关键字,为什么它特别?

编辑

好吧,正如@sergey建议的那样,它肯定比我想象的要复杂一点.特别是关于实体框架的蠢事.

这在单元测试类中表现出来,也可能是相关的.我不确定什么是相关的,什么不是现在不幸的,所以这是整个[TestInitialize]方法,在它的底部你可以看到奇怪的事情发生在context.SaveChanges():

[TestClass]
public class EntityConverterTests
{
    private Author a;
    private Post p, p2, p3; …
Run Code Online (Sandbox Code Playgroud)

.net c# database entity-framework

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

检查后,DataGridView中的复选框不会更改其值

我在DataGridView的一个列中有复选框.

现在我遇到了一个问题:当我在Checkbox上单击一次时,它会发生变化但只是视觉上,在代码中它的值仍然设置为false.但是如果我点击Checkbox然后点击我的datagridview上的其他任何地方(或者在代码中手动更改其值为true),它会将其值更改为true.

如何在单击后强制我的复选框更改值?(检查复选框实际上没有检查它很烦人).

谢谢你的帮助.

c# datagridview datagridviewcheckboxcell winforms

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

特殊字符的WCF服务失败

我有一个C#WCF服务运行,需要接受ISO-8859-1中的消息.一切正常,直到有人发送包含特殊字符的消息,如äö.

如果字符编码(äto \344ä)一切正常,但发件人坚持认为如果消息是ISO-8859-1,则不需要转义.

更具体地说,这是有效的(简化示例):

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    a
  </soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)

(但当然由于语法无效而引发另一个异常,但传输本身很好).

这不起作用:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    ä
  </soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)

并抛出一堆无处可寻的神秘错误信息:

<ExceptionType>System.ServiceModel.CommunicationException, System.ServiceModel, ...</ExceptionType>
<Message>The I/O operation has been aborted because of either a thread exit or an application request</Message>
...
<ExceptionType>System.ServiceModel.CommunicationException, System.ServiceModel, ...</ExceptionType>
<Message>An operation was attempted on a nonexistent network connection</Message>
Run Code Online (Sandbox Code Playgroud)

我试图使用空的App.config运行该服务并且问题仍然存在,所以我很确定问题不在于我创建服务的方式,而在于WCF如何处理消息.将编码更改为UTF-8也无济于事.

知道为什么单个变音符号会破坏服务这么灾难性吗?XML应该支持除ASCII之外的编码,那么这里的交易是什么?我可以做任何改变,或者如果所有的希望都失去了,我怎么能说服发件人编码他们的特殊字符?

.net c# wcf character-encoding

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

垃圾收集器何时收集单身人士?

SomeSingleton在C#中有一些类(如果重要,则为.NET 3.5)和代码:

foo()
{
    ...
    SomeSingleton.Instance.DoSomething();
    ...
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:垃圾收集器什么时候会收集这个Singleton对象?

ps:SomeSingleton的代码:

    private static SomeSingleton s_Instance = null;
    public static SomeSingleton Instance
    {
        get 
        {
            if (s_Instance == null)
            {
                lock (s_InstanceLock)
                {
                    if (s_Instance == null)
                    {
                        s_Instance = new SomeSingleton();
                    }
                }
            }
            return s_Instance;
        }
    }
Run Code Online (Sandbox Code Playgroud)

感谢帮助!

编辑(附说明):

在Widnows服务中我有代码:

   ...
   FirstSingleton.Instance.DoSomething();
   ...

public class FirstSingleton
{
    (Instance part the same as in SomeSingleton)
    public void DoSomething()
    {
        SomeSingleton.Instance.DoSomething();
    }
}
Run Code Online (Sandbox Code Playgroud)

我想要实现的目标:我不关心FirstSingleton会发生什么,但SomeSingleton首先使用它启动Timer,所以我需要SomeSingleton存在(所以定时器可以在每个时间段运行新线程),只要我的服务是运行.

正如我从你的答案中理解的那样,所有这一切都会发生,因为对我的FirstSingleton和SomeSingleton的引用是静态的,并且在服务停止之前GC不会收集单身人士,我是对的吗?:)

.net c# singleton garbage-collection

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

无法在.NET 3.5中使用ServiceController停止服务

我在.NET 3.5中工作,我遇到了使用ServiceController停止某些服务的问题.我搜索整个互联网,我发现我的问题无法解决;)

我是这样做的:

using (ServiceController service = new ServiceController("Service"))
{
    try
    {
        TimeSpan timeout = TimeSpan.FromSeconds(timeoutSeconds);

        service.Stop();
        service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

我等到我的服务停止了.然后我想替换它的库(更新它).抛出异常:

UnauthorizedAccessException异常详细信息:System.UnauthorizedAccessException:拒绝访问路径'blablabla'.

我确信我可以访问此路径,因为我以管理员身份运行我的应用程序.

当这段代码执行时,有趣的是,此服务从当前服务列表中消失(在任务管理器中).所以它实际上阻止了它,但是一些线程仍然必须使用它,所以我无法移动任何Service的文件.即使我尝试自己移动文件(我转到Service目录并尝试使用鼠标移动文件)我也做不到.但是当我手动停止服务(任务管理器和'结束任务')时,我可以用它的文件做任何我想做的事情.那么从C#代码(使用ServiceController)停止它并使用任务管理器停止它之间的区别是什么?

我不知道它是否重要,但我在Virtual Box的Windows Server 2008上运行此应用程序(和此服务).(我需要在其他机器上运行它然后我的电脑).

任何想法如何解决这个问题?;)

谢谢你的帮助.

祝福,皮特.

.net c# service windows-services servicecontroller

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

加入两个集合,从第二个集合中获取值(左外连接)

说我有两个List<KeyValuePair<string, string>>a和b,其中a =

"one", "N",
"two", "N",
"three", "N"
Run Code Online (Sandbox Code Playgroud)

和b =

"one", "Y"
"two", "N"
Run Code Online (Sandbox Code Playgroud)

我想做一个左外连接,但是Value如果b中有一个条目则取b的值,所以结果应为=

"one", "Y" <- this value is taken from b
"two", "N",
"three", "N"
Run Code Online (Sandbox Code Playgroud)

我尝试过做一个普通的左外连接,但是Value"三" 的结果总是一个空字符串

    var res = (from l in a
              join r in b on l.Key equals r.Key into lrs
              from lr in lrs.DefaultIfEmpty()
              select new KeyValuePair<string, string>(l.Key, lr.Value)).ToArray();
Run Code Online (Sandbox Code Playgroud)

.net c# linq collections

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

如何在同一 C# 控制台应用程序中运行 Program.cs 文件以外的 .cs 文件?

我创建了一个控制台应用程序,用它创建了program.cs 文件,但我在同一个项目中创建了不同的类,其中包含 main 方法。如何运行我的新班级?每次我运行我的应用程序时,它都会在控制台应用程序中继续执行 Program.cs 。你能指导我正确的道路吗?

.net c# console-application

0
推荐指数
1
解决办法
3858
查看次数