如何将DataGridView单元格的字体设为特定颜色?

此代码适用于使单元格的背景为蓝色: DataGridViewRow dgvr = dataGridViewLifeSchedule.Rows[rowToPopulate]; dgvr.Cells[colName].Style.BackColor = Color.Blue; dgvr.Cells[colName].Style.ForeColor = Color.Yellow; …但ForeColor的效果并不是我所期望/希望的:字体颜色仍然是黑色,而不是黄色。 如何将字体颜色设置为黄色?

为什么EF 5.x对表使用复数名称?

我在ORM框架方面有过一些经验,比如Hibernate,甚至是Entity Framework 3.0。 默认情况下,这些框架对表使用单数名称。 例如,类User将映射到表User。 但是当我使用Visual Studio 2012迁移到EF 5.x时,它使用复数名称并导致许多错误,除非我使用TableAttribute手动映射该类: [Table(“User”)] public class User { // … } 没有TableAttribute ,如果我有一个DbContext如下: public CustomContext : DbContext { // … public DbSet Users { get; set; } } 然后打电话: var list = db.Users.ToList(); 生成的sql看起来像: Select [Extent1].[Username] From [Users] as [Extent1] 因此,将发生错误,因为我没有任何名为Users的表。 此外,我将单数forms的名称表格称为复数forms。 你可以在这个链接中看到原因 我想知道为什么微软以这种方式实现EF 5.x而不是EF 3.0? 更新: 我们可以通过在上下文类中使用此代码告诉EF不使用复数名称: protected […]

C#中的Volatile和Thread.MemoryBarrier

为了实现multithreading应用程序的无锁代码 ,我使用了volatile变量, 理论上 : volatile关键字用于确保所有线程都能看到volatile变量的最新值; 因此,如果线程A更新变量值,并且线程B在更新发生之后读取该变量,它将看到最近从线程A写入的最新值。正如我在Nutshell书中的C#4.0中读到的那样,这是不正确的,因为 应用volatile不会阻止写入后读取交换。 可以通过在每次获取volatile变量之前放置Thread.MemoryBarrier()来解决这个问题: private volatile bool _foo = false; private void A() { //… Thread.MemoryBarrier(); if (_foo) { //do somthing } } private void B() { //… _foo = true; //… } 如果这解决了问题; 考虑我们有一个while循环,它依赖于其中一个条件的值; 在while循环之前放置Thread.MemoryBarrier()是解决问题的正确方法吗? 例: private void A() { Thread.MemoryBarrier(); while (_someOtherConditions && _foo) { // do somthing. } […]

内存中.NET值类型的布局

我有以下.NET值类型: [StructLayout(LayoutKind.Sequential)] public struct Date { public UInt16 V; } [StructLayout(LayoutKind.Sequential)] public struct StringPair { public String A; public String B; public String C; public Date D; public double V; } 我有代码将指向值类型的指针传递给非托管代码,以及通过调用System.Runtime.InteropServices.Marshal.OffsetOf发现的偏移量。 非托管代码填充Date和double值。 为StringPair结构报告的偏移正是我所期望的:0,8,16,24,32 我在测试函数中有以下代码: FieldInfo[] fields = typeof(StringPair).GetFields(BindingFlags.Instance|BindingFlags.Public); for ( int i = 0; i > field {0} @ offset {1}”, fields[i].Name, offset)); } […]

C#Silverlight 3 – 以编程方式在页面之间导航?

假设我有一个包含多个页面的C#Silverlight 3应用程序。 第一页称为Home,第二页称为Details。 导航到详细信息的唯一方法是以编程方式。 我该怎么做呢?! 到处寻找答案,我发现的都是xaml uri mapper实现…. 非常感谢

CreateInstanceAndUnwrap和Domain

我有一个属性,其实例我想在其他域中。 public ModuleLoader Loader { get { if(_loader == null) _loader = (ModuleLoader)myDomain.CreateInstanceAndUnwrap( this.GetType().Assembly.FullName, “ModuleLoader”, false, System.Reflection.BindingFlags.CreateInstance, null, null, null, null); System.Diagnostics.Debug.WriteLine(“Is proxy={0}”, RemotingServices.IsTransparentProxy(_loader)); //writes false _loader.Session = this; return _loader; } } 这很好用。 但我假设_loader实例上的所有方法调用都将在其他域(myDomain)中调用。 但是当我运行以下代码时,它仍然会编写主应用程序域。 public void LoadModule(string moduleAssembly) { System.Diagnostics.Debug.WriteLine(“Is proxy={0}”, RemotingServices.IsTransparentProxy(this)); System.Diagnostics.Debug.WriteLine( AppDomain.CurrentDomain.FriendlyName); System.Diagnostics.Debug.WriteLine(“———–“); } 是因为Unwrap()? 我在哪里做错了? 我知道AppDomain会创建单独的内存。 我需要的是我的主应用程序运行,它在不同的AppDomain中加载模块。 由于主应用程序还希望观看模块的一些活动以及与在单独域中运行的对象进行交互,因此实现它的最佳方法是什么。

为什么我只能从静态函数访问静态成员?

我在一个类中有一个静态函数。 每当我尝试使用非静态数据成员时,我都会遇到编译错误。 非静态字段,方法或属性成员需要对象引用 为什么它表现得那样?

PropertyInfo.GetValue() – 如何使用C#中的reflection索引到generics参数?

这个(缩短的)代码.. for (int i = 0; i < count; i++) { object obj = propertyInfo.GetValue(Tcurrent, new object[] { i }); } ..正在抛出’TargetParameterCountException:参数计数不匹配’exception。 ‘propertyInfo’的基础类型是一些T的集合。’count’是集合中的项目数。 我需要遍历集合并对obj执行操作。 建议表示赞赏。

以快速的方式找到LIne和网格之间的交点

反正有没有让我找到一条线和一个网格之间的所有交叉点? (交叉圆圈不是按比例绘制的,我知道) 蛮力方式是计算xy网格与线的非常交集,但是该算法非常低效( O(m*n) ,其中m是x网格的数量, n是y网格的数量)。 我正在寻找一个更好的算法。

使用GroupBy和Average将SQL转换为lambda LINQ

我花了几个小时试图将简单的SQL翻译成lambda LINQ SELECT ID, AVG(Score) FROM myTable GROUP BY ID 任何的想法?