小编Kor*_*tak的帖子

为什么DateTime.Now.ToBinary()返回的值不同于构造函数创建的值

这就是我尝试过的:

DateTime now = DateTime.Now;
long timeA = now.ToBinary();
long timeB = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second, now.Millisecond).ToBinary();

Debug.WriteLine("{0} {1}", timeA, timeB);
Run Code Online (Sandbox Code Playgroud)

这是输出:

-8588637543837682554 634734565017110000
Run Code Online (Sandbox Code Playgroud)

timeAtimeB主要应同样的事情,但他们被转换成一个完全不同的(负)的二进制文件.

为什么会这样?为什么直接调用ToBinary()DateTime.Now产生不同的结果?

编辑:由于我的问题被误解(并因此被低估)我已经纠正了我的帖子以更好地代表真正的问题.问题出在DateTime.Kind上,这是真正的问题,而不是连续两次DateTime.Now调用的小差异.

.net c# datetime deserialization

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

可以在Android上不使用标头的情况下使用TimePicker

我正在使用<TimePicker>小部件来使用户设置时间。但是,由于我将嵌入<TimePicker>到自己的视图中,所以我想摆脱TimePicker的标题(图片中的划线区域)。

Android中的默认时间选择器如下所示:

问题:是否可以删除时间选择器的标头并仅使用小部件的模拟部分?

Android选择器

android timepicker

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

如何使后台线程暂停,然后继续按钮单击?

我有一个Windows窗体和一个带有两个简单方法的类,这些方法以非确定的方式递归运行(意味着不知道将调用哪个递归,两者都可以调用另一个)...现在,在递归过程中有一些点,我想暂停执行并等待用户点击"下一步"按钮.只有在按下按钮后,递归功能才会继续.该类在单独的线程上运行,因此它不会阻止UI.

在该暂停期间,Form将简单地从类中检索值并将其显示在列表框中.然后在按下按钮后,递归继续,直到下一个Pause().我需要这个,以便用户可以逐步查看递归中发生的情况.此外,我需要能够将Pause()放在递归方法的任何地方(甚至多次),而不会造成任何副作用......

我想到的唯一方法是调用Pause()方法,其中循环检查一些锁定标志然后休眠一段时间(然后按钮会设置标志),但我对Thread.Sleep有一些不好的经历( )在Windows窗体(锁定UI),所以我正在寻找其他选项.

有没有干净的方法来做到这一点?

c# backgroundworker winforms

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

在方法的开头到结尾处错误处理的优缺点是什么

在我的程序员的经验中,我尽可能地混合错误处理......我创造了我的个人风格.

但是,我想听听你认为在开始时和方法结束时错误处理的优缺点.

处理开头:

public String GenerateSomeStringData(String data, int value)
{
    if (data == null)
        throw new ArgumentNullException("data");

    if (value <= 0)
        throw new ArgumentException("value must be greater than zero");

    int dataValue;
    if (!int.TryParse(data, out dataValue))
        throw new InvalidOperationException("data does not contain an integer");

    return dataValue * 4 + value / 12;
}
Run Code Online (Sandbox Code Playgroud)

最后的处理:(同样的例子)

public String GenerateSomeStringData(String data, int value)
{
    if (data != null)
    {
        if (value > 0) 
        {
            int dataValue;
            if (int.TryParse(data, out …
Run Code Online (Sandbox Code Playgroud)

c# error-handling paradigms

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

生成实体时如何使RIA忽略属性?

背景: Silverlight 4("Library"silverlight项目)RIA连接到Entity Framework Model(Library.Web Web应用程序项目).

描述:

我有一节课:

public class Book
{
    [Key]
    public int ID { get; set; }
    public String Name { get; set; }
    public DateTime DatePublished { get; set; }

    // I don't need this one in SL4
    public BookInfo Info { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译时,RIA会生成以下错误:

实体"MyCompany.Library.Book"的属性"Info"具有不受支持的类型.

问题: 我在SL4应用程序中不需要该属性,所以我想知道的是如何防止RIA在生成代理对象时尝试生成该属性?

c# silverlight ria properties

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

计算ListBox中可见项的数量

我有一个叫做Book的课;

class Book
{
    public string Name { get; set; }
    public string Author { get; set; }
    public int PagesCount { get; set; }
    public int Category { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

ListBox显示Books列表,并且ItemTemplate已被修改,以便直观地表示Book.文本显示了书的名称,作者和页数.然而,类别由某种颜色表示(例如,历史是蓝色,浪漫是红色等).现在,文本具有OuterGlowBitmap效果和从Category(int)到适当Color的值转换器.所有内容都绑定在DataTemplate for ListBoxItem中.从技术上讲,一切正常.

然而,问题在于性能.似乎outerGlow位图效果在处理器上很重,所以当我有大约500本书的列表时,从数据库中检索数据需要大约500ms,但实际将项目加载到ListBox大约需要10秒.即使加载完成,滚动也非常滞后.我试图将VirtualizingStackPanel.IsVirtualizing设置为True,但无济于事.(在任何给定时间,数据库中可以存在的最大书籍数量约为30000.)

但是,即使列表框中有超过100个项目,人类思维也无法快速处理,因此我无意加载并向用户列出所有搜索到的书籍.这就是为什么我创建了一个包装器导航类BookNavigator,它实际上将列表框绑定到它的ObservableCollection对象.所有书籍都被加载到这个BookNavigator中,但它们中只有X个显示在列表框中(通过将它们添加到observableCollection中).

这个问题是我希望显示的书籍数量足够小,以便列表框不显示滚动条,所以我可以实现我自己的滚动方法(第一个,上一个,下一个,最后一个,或者只是我自己的滚动条,不没问题.

如何计算要显示的项目数以便不显示滚动条?

弹出的两个问题: - 调整应用程序大小可以更改列表框的大小 - 并非所有列表框项目都具有相同的高度(取决于作者的数量).

有没有办法实现我想做的事情?


编辑(作为对Martin Harris的回复)

代码Martin Harris建议的问题是foreach循环使用FrameworkElement,但是listbox填充了Book类型的对象,它不从FrameworkElement继承,也没有任何其他计算高度的方法.ListBoxItem的根元素是一个网格,所以也许可以检索这个网格,但我不知道该怎么做?

是否有任何方法可以获得为表示列表框项而创建的实际UI元素?


编辑

我发现这个Q/A似乎是我需要的...... ItemContainerGenerator

wpf scroll listbox visible

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

如何使用C#将Windows窗体面板作为位图?

我有一个Windows窗体,面板上有几个控件.面板不会占用所有的表单空间,只占很小的一部分.我想知道的是,是否有某种方法可以检索面板的显示(包含所有子控件)作为位图.就像一个截图,但只是裁剪到面板.

我没有调查屏幕捕获,因为面板在可滚动控件(DevX控件)内,所以有时它可能不完全可见,我需要它的可视化表示是否可见.

这有可能吗?

编辑:

好吧,现在好像我担心的那样.使用DrawToBitmap()的建议解决方案仅绘制可见的控件部分.我使用DisplayRectangle来检索完整控件的大小.矩形是可以的,现在位图是完整控件的大小,但是控件中不可见的部分在位图上是透明的,不显示控件的不可见部分上的控件.

有没有机会完全渲染?

screenshot bitmap panel winforms

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

从另一个PHP脚本下载PHP生成的页面的内容

我在服务器上有一个PHP脚本,可以动态生成XML数据,例如Content-Disposition:附件或简单的echo,无关紧要.我将这个文件命名为www.something.com/myOwnScript.php

在另一台服务器上,在另一个PHP脚本中,我希望能够将此文件(以避免"将文件保存到磁盘")作为字符串(使用路径www.something.com/myOwnScript.php)然后操作XML数据脚本生成.

这可能不使用Web服务吗?安全隐患?

谢谢

php code-generation download content-disposition

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

没有webserver的mysql访问(例如Apache)

我想知道是否有办法访问远程计算机上的数据库服务而没有在该计算机上安装Web服务器?

MYSQL DBMS是否提供了一些可以直接连接到的接口(端口),或者是一个必要的网络服务器(转发通信)?

mysql apache webserver database-connection

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

使用模数和公共指数的C#RSA加密

我必须使用AES和RSA实现数字信封,但我遇到了RSA算法的.NET实现问题.

我已设法使用随机对称密钥加密数据(AES),但现在我必须使用RSA加密密钥.

键是一个bytes(byte[])数组,我只告诉我模数和公共指数,两个字节数组(byte[]).

仅使用这两个参数,如何使用RSA加密AES生成的密钥?

以下代码从文件中检索消息并使用AES对其进行加密.然后,从公钥文件中读取公钥,并且模数和指数在其适当的字节数组中.我如何继续symmetricKey使用RSA加密?

String msgString = Systematic.GetFileContents(messagePath);
Byte[] initVector = new byte[] { 50, 60, 70, 80, 90, 40, 50, 60, 70, 80, 90, 40, 60, 80, 70, 90 };
Byte[] symetricKey = AesCrypt.GenerateRandomKey();
Byte[] encryptedMessage = AesCrypt.Encrypt(msgString, symetricKey, initVector, mode);
Byte[] modulus = null;
Byte[] publicExp = null; 
DataFormatHelper.ReadPublicKey(publicKeyPath, "RSA", ref modulus, ref publicExp);
Run Code Online (Sandbox Code Playgroud)

PS回答提到的答案rsa.ImportParameters:我已经尝试了rsa.ImportParameters(keyInfo)但它抛出了一个CryptographicException("Bad Data").数组大小怎么样?目前,模数为128字节,指数为64字节.

c# encryption rsa

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

EF4 ObjectContext.SaveChanges线程安全吗?

我通过Entity Framework 4访问我的数据库.

我有一个服务器侦听端口,等待一些消息.当消息到来时,它将被转换为表行,并且应该将其插入到数据库中.但是,可以同时发送多条消息.对于每条消息,我创建一个Task(来自TPL)并异步执行它.

这些任务中的每一个都创建一个ObjectContext实例,创建相应实体类的对象(表示DB中的表),将数据插入ObjectContext,然后调用SaveChanges方法.

因此每个线程都创建了自己的ObjectContext.ObjectContext的实例是否可以影响ObjectContext的任何其他实例?这种情况会有副作用吗?

(请注意,插入的数据不会创建任何参照完整性错误).

c# entity-framework savechanges thread-safety

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

密码框验证文本更改而不是丢失焦点

框架:Silverlight 4

我有一个简单ChildWindow的用户名TextBox和密码PasswordBox.我已经为窗口的KeyDown事件附加了一个事件处理程序.

private void onKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Escape)
        cancelButtonClick(null, null);

    if (e.Key == Key.Enter)
        okButtonClick(null, null);
}
Run Code Online (Sandbox Code Playgroud)

我想要实现的是当用户按下键盘上的Enter键时,程序的行为就像用户点击了OK按钮一样.

问题是验证.

Silverlight的PasswordBox的默认行为是在控件失去焦点时执行验证.我PasswordBox必然会遇到一些User对象.当我单击Enter按钮时,将调用事件处理程序,然后调用该事件处理程序okButtonClick(null, null).问题是当时PasswordBox还没有失去焦点,所以必然的user.Password财产PasswordBox仍然是空的.

我试图btnOK.Focus()在此之前放置,okButtonClick(null, null)但无济于事.

如何设置绑定,以便控件将更新每个文本更改而不是LostFocus事件的绑定?达到我需要的正确方法是什么?

validation silverlight binding focus keydown

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