小编Joh*_*ers的帖子

在 C# 中处理时区

我需要实现的是,显示带有组合框(包含所有时区)的 UI,以及组合框下方的复选框。仅当时区(选定的组合框项)支持夏令时时才应显示该复选框。还可以在呈现 UI 控件时根据上次配置选中/取消选中复选框。

现在 C# 中的 TimeZoneInfo 类允许我获取时区列表(组合框的数据)。但是 TimeZoneInfo 类中的 SupportsDayLightSaving 属性在 Checkbox 被选中时显示为 true,当没有复选框或 Checkbox 未选中时为 false

那么我如何通过 C# 确定,

1.时区是否支持DayLightSavingTime(例如:印度标准时间不支持夏令时) 2.是否启用夏令时(勾选/取消勾选)时区是否支持夏令时。

编辑:如果我之前没有正确解释,这里是更详细的信息。我想做的事 :

  1. 显示/隐藏复选框(做出此决定的条件是什么)
  2. 如果显示复选框,则选中/取消选中复选框(做出此决定的条件是什么)。

PS:根据 MSDN SupportsDaylightSavingTime 属性,如果复选框被选中,该值将为 true,如果复选框未选中或时区不支持 DST,则值为 false。有了这个属性,如果值为 false,那么我无法确定是隐藏复选框还是显示它并取消选中复选框。例如:对于印度标准时间,我不应该显示复选框,为此,如果我必须依赖属性值,那么我会将其设为 false 并且我可以隐藏它。但考虑到我们有柏林时区(+1 UTC),使用控制面板设置取消选中复选框,然后我将属性值检索为 false 并应用上述逻辑将隐藏复选框,但在这里我想显示未选中状态的复选框。

编辑答案:看起来我无法正确解释问题,对此我深表歉意。经过长时间的谷歌搜索和搜索,我可以看到 .NET 没有提供 API 来支持我的需求。因此提出了一个解决方案,

检查 SupportsDaylightSavingsTime 属性是否为 true ,如果然后显示选中状态的复选框。如果上述属性值为 false ,则检查注册表中的 DynamicDaylightTimeDisabled 值 (HKLM\System\CurrentControlSet\Control\TimeZoneInformation)。因为这里的 false 并不意味着时区不支持 DST,而是也可以禁用它。如果值为 1,则显示未选中状态的复选框(因为它支持 DST 但目前已禁用)。如果值为 0 ,则不显示复选框。(因为时区不支持 DST)。

    //get the time zone info for the currently selected time …
Run Code Online (Sandbox Code Playgroud)

.net c# wpf timezone

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

获取执行代码的行号

我们如何获得C#/ WinForms中当前正在执行的代码的行号.

在PHP中,我们可以访问__LINE____FUNCTION__访问有关当前正在执行的代码段的详细信息.

.net c# winforms

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

排序字符串数组中的数字

我有一个字符串数组(concatarray)包含的项目,如

15.234 Mon 10,20.12345 Tue 11,11.3521 Wed 12,1901.23 Thu 13

我希望将它从最大数量到最小数量排序,就像这样

1901.23 Thu 13,20.12345 Tue 11,15.234 Mon 10,11.3521 Wed 12

我试过了

Array.Sort <string>(concatarray);

Array.Reverse(concatarray);

但那就到了

20.12345 Tue 11,1901.23 Thu 13,15.234 Mon 10,11.3521 Wed 12

c# arrays sorting

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

没有显式转换(你是否错过了演员表)

我的代码确实有效但现在它告诉我在返回行中有一个明确的转换.

public IEnumerable<Contacts> GetAllContacts()
{
    var Contacts = from c in dbc.Contacts select c;
    return (IEnumerable<Contact>)Contacts;
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net

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

使用.SaveChanges()保存电子邮件时出错;

当我将电子邮件留空并提交注册表单时,它会将表单输入正确保存到数据库中.但是,当我包含一封电子邮件(例如:testemail@gmail.com)时,它会在db.SaveChanges(); 叫做.

我收到的错误说:

EntityFramework.dll中出现"System.Data.Entity.Validation.DbEntityValidationException"类型的异常,但未在用户代码中处理

附加信息:一个或多个实体的验证失败.有关详细信息,请参阅"EntityValidationErrors"属性.

控制器:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using Mkq.Models;

namespace Mkq.Controllers
{
    public class TeacherController : Controller
    {
        private MkqDbEntities db = new MkqDbEntities();

    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public ActionResult Register([Bind(Include="teacher_id,subscription_id,teacher_fname,teacher_lname,username,password,email,teacher_credNumber,teacher_credST")] Teacher teacher)
    {
        teacher.subscription_id = 1;
        teacher.teacher_credNumber = null;
        teacher.teacher_credST = null;
        if (ModelState.IsValid)
        {
            db.Teachers.Add(teacher);
            db.SaveChanges();     //Error occurs when submitted
            return View();
        }

        // If we got this far, something failed, redisplay form
        return …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc

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

如果在C#中继承,是否真的可以首先调用Child类构造函数而不是父类构造函数

任何正文都可以帮我解释一下,在C#继承的情况下,首先调用Child类构造函数而不是父类构造函数是否真的可行?

c# oop inheritance constructor

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

使用静态属性打印实例数据

我写了一些类列表,这是我用来初始化类的代码

  public class Album
   {
       static public int IDNumber { get; set; }
       static public string AlbumName { get; set; }
       static public string Artist { get; set; }
       static public int ReleaseDate { get; set; }
       static public int TrackAmount { get; set; }
       static public string Location { get; set; }
       static public int Rating { get; set; }

       public Album(int _id, string _name, string _artist, int _releasedate, int _trackamount, string _location, int _rating)
       {
           IDNumber = _id; …
Run Code Online (Sandbox Code Playgroud)

c#

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

Visual Studio 2013表达了缺少Windows窗体的C#项目模板

我刚刚在Windows 8.1上安装了MS Visual Studio 2013 Express的全新副本.安装后我检查了新的IDE.当我创建一个新的C#项目时,我需要像往常一样选择项目模板.但我唯一的选择是:商店应用>通用应用,空白商店应用等.

问题是我想创建一个winform项目,但我找不到合适的模板.我是否需要手动下载并安装Winform项目模板?

编辑:

我想创建这种项目.http://msdn.microsoft.com/en-us/library/dd492132.aspx

.net c# visual-studio-express visual-studio-2013

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

列表只能使用Enumeration访问

什么是最好的方法System.Collections.Generic.List,只有一个enum?为了帮助描述我正在寻找的东西,我现在就这样做:

enum MyEnum
{
    First,
    Second,
    Count
}

class MyClass
{
    List<SomeClass> myList = new List<SomeClass>((int)MyEnum.Count);

    MyClass()
    {
        myList[(int)MyEnum.First] = new SomeClass(1);
        myList[(int)MyEnum.Second] = new SomeClass(2);
    }
}
Run Code Online (Sandbox Code Playgroud)

我觉得我错过了什么.有没有更好的方法呢?如果答案很明显,我很抱歉,我发现很难找到听起来如此通用的东西.


作为一些背景,我将使用此列表来访问我的代码中的不同纹理,例如,enum将具有纹理名称,并且每个纹理将被放置在以后List使用该纹理名称访问.

c# enums list

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

文本框不可点击但可编辑

我有一个带有10个文本框的小表单,我将它们设置在右边的Tab顺序中,目前我希望它们以Tab To的方式.我想知道是否有办法设置文本框,因此除非它们被选中,否则无法选择它们进行编辑.ie ...我不希望最终用户能够点击文本框来编辑它们,我只希望它们可以通过Tabbing进行编辑.

c# textbox winforms

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