小编Mar*_*rks的帖子

在TextBox中输入时执行viewmodels命令

当用户在TextBox中按Enter键时,我想在我的viewmodel中执行一个命令.该命令在绑定到按钮时有效.

<Button Content="Add" Command="{Binding Path=AddCommand}" />
Run Code Online (Sandbox Code Playgroud)

但是我不能从TextBox开始工作.我尝试了一个Inputbinding,但它没有用.

<TextBox.InputBindings>
    <KeyBinding Command="{Binding Path=AddCommand}" Key="Enter"/>
</TextBox.InputBindings>
Run Code Online (Sandbox Code Playgroud)

我还尝试将工作按钮设置为默认值,但按下输入时不会执行.

谢谢你的帮助.

wpf command textbox

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

T-SQL计算具有特定值的行(在一个查询中为多个)

我需要一些T-SQL查询的帮助.我想计算具有特殊值的字段(例如> 1).

假设我有一个像这样的表:

IGrp | Item | Value1 | Value2
#############################
A    | I11  | 0.52   | 1.18
A    | I12  | 1.30   | 0.54
A    | I21  | 0.49   | 2.37
B    | I22  | 2.16   | 1.12
B    | I31  | 1.50   | 0.28
Run Code Online (Sandbox Code Playgroud)

我想得到一个结果:

IGrp | V1High | V2High 
######################
A    | 1      | 2
B    | 2      | 1
Run Code Online (Sandbox Code Playgroud)

在我看来,这应该与这个表达一致

SELECT IGrp, COUNT(Value1>1) AS V1High, COUNT(Value2>1) AS V2High
FROM Tbl GROUP BY IGrp
Run Code Online (Sandbox Code Playgroud)

但是这在T-SQL中是不可能的,因为Count()不采用布尔值.因此,它是真正的唯一可能的方式是与多个查询WHERE Value>1 …

t-sql count

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

无法访问SqlTransaction对象以在catch块中回滚

我遇到了问题,我发现的所有文章或例子似乎都不关心它.

我想在事务中执行一些数据库操作.我想做的与大多​​数例子非常相似:

using (SqlConnection Conn = new SqlConnection(_ConnectionString))
{
    try
    {
        Conn.Open();
        SqlTransaction Trans = Conn.BeginTransaction();

        using (SqlCommand Com = new SqlCommand(ComText, Conn))
        {
            /* DB work */
        }
    }
    catch (Exception Ex)
    {
        Trans.Rollback();
        return -1;
    }
}
Run Code Online (Sandbox Code Playgroud)

但问题是SqlTransaction Transtry块内声明了.所以它在catch()块中是不可访问的.大多数例子只是在阻止之前Conn.Open()Conn.BeginTransaction()之前try,但我认为这有点风险,因为两者都可以抛出多个异常.

我错了,还是大多数人都忽略了这种风险?如果发生异常,什么是能够回滚的最佳解决方案?

c# sql ado.net transactions rollback

33
推荐指数
3
解决办法
6万
查看次数

如何在Windows 7中隐藏任务栏中的应用程序?

我想隐藏Windows 7任务栏中的应用程序.

我希望在屏幕边缘做一些工具栏,当用户点击它时会做某些事情,但我不希望它显示在任务栏中,因为它是我想要留在后台的东西.

我尝试了以下帖子中的说明,但它对我的应用程序无效:

如何隐藏任务栏条目但保留窗口表单

然后我尝试了一个新的空VCL表单应用程序,它仍然无法正常工作.我搜索了其他解决方案,但它们都像链接的帖子一样做得非常相似.

有什么变化,这在Windows 7中是不可能的吗?或者你能想到什么,可以阻止它工作?

delphi winapi taskbar delphi-2007

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

Gridsplitter忽略列的最小宽度

我希望有一个简单的3列网格,可调整列,MinWidth为80.

代码如下所示:

<Grid>
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="120" MinWidth="80"/>
    <ColumnDefinition Width="Auto"/>
    <ColumnDefinition Width="*" MinWidth="80"/>
    <ColumnDefinition Width="Auto"/>
    <ColumnDefinition Width="120" MinWidth="80"/>
  </Grid.ColumnDefinitions>
  <GridSplitter Grid.Column="1" Width="5" HorizontalAlignment="Center" />
  <GridSplitter Grid.Column="3" Width="5" HorizontalAlignment="Center" />
</Grid>
Run Code Online (Sandbox Code Playgroud)

但它不能按我想要的方式工作.当分离器被推到左侧时,一切正常.当第二个分离器向右推时,一切正常.但是如果第一个分离器被推到右侧,它会将第3列和第二个分离器推出网格(或使其宽度= 0).

我使用单独的列作为gridsplitters,就像它在msdn示例中所做的那样:

<Grid.ColumnDefinitions>
  <ColumnDefinition/>
  <ColumnDefinition Width="Auto" />
  <ColumnDefinition/>
</Grid.ColumnDefinitions>
...
<GridSplitter Grid.Column="1"
      HorizontalAlignment="Center"
      VerticalAlignment="Stretch"
      Background="Black" 
      ShowsPreview="True"
      Width="5"
      />
Run Code Online (Sandbox Code Playgroud)

我还将对齐设置为居中,因为我在某处读取了右对齐可能是一个问题并尝试了不同的ResizeBehaviors.

有谁知道,如何解决这个问题,以便始终可见3列宽度至少为80px?

谢谢你的帮助

wpf grid gridsplitter

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

部署Visual Studio 2010数据库项目

我有一个Visual Studio 2010数据库项目,我想从中生成一个脚本,只需将此数据库放到另一台机器上.问题是我无法找到解决方案.

当我开始这个项目时,我从我的开发电脑上的数据库导入了shema.生成了模式对象,并在"模式对象 - >模式 - > dbo"下的所有表和脚本.随着时间的推移,有些事情发生了变化 通过右键单击 - > deploy,可以成功更改我的本地数据库.

但现在我想部署到另一台机器.问题是,在项目的release文件夹中,只有一个xml dbschema文件,其中包含我无法使用sql management studio导入的所有表和脚本(或者我只是找不到如何)和部署脚本只是一些检查,后面是部署前和脚本后的脚本,但没有任何表或脚本.

那么,请问如何从Visual Studio导出数据库,以便我可以轻松地将其放在另一台机器上?

database sql-server visual-studio-2010

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

使用RSACryptoServiceProvider签名的速度

我目前正在进行简单的数据签名.这是我第一次使用签名,所以也许我只是做错了.但我不认为使用512位RSA和SHA1散列签署448字节需要4.6秒才是正常的.

代码:

byte[] Data = enc.GetByte(MsgString); //Get Message as byte[]
//Data is 448 bytes long

RSACryptoServiceProvider Crypter = new RSACryptoServiceProvider(512);
Crypter.ImportCspBlob(Convert.FromBase64String(KeyString));

byte[] SignedData = Crypter.SignData(Data, "SHA1"); //Line takes 4.6 seconds
Run Code Online (Sandbox Code Playgroud)

为什么这么慢?我发现了这个:http://support.microsoft.com/kb/948080,但那是.NET 2.0的一个问题.我正在使用4.0.

这需要那么久还是有错误,这是正常的吗?

谢谢你的帮助.

c# hash cryptography

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

在保持纵横比的同时调整表格大小

我有一个窗口,我在其中显示一张图片.我希望用户能够调整此窗口的大小,但保持它与图像的纵横比相同,因此窗口上不会出现大的空白区域.

我在OnResize事件中尝试的是这样的:

DragWidth := Width;
DragHeight := Height;

//Calculate corresponding size with aspect ratio
//...
//Calculated values are now in CalcWidth and CalcHeight

Width := CalcWidth;
Height := CalcHeight;
Run Code Online (Sandbox Code Playgroud)

问题是,在原始调整大小和计算值之间调整大小时窗口会闪烁,因为在调整大小已经完成(并绘制一次)之后调用OnResize事件.

你知道任何解决方案是否有平滑的宽高比调整大小?

谢谢你的帮助.

forms delphi events

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

C# - foreach显示奇怪的行为/没有问题

今天我编写了一个使用两个嵌套的foreach循环的函数.看到后,它没有像预期的那样工作,我调试了它.但我没有看到错误,并且不认为一个简单的错误可能导致我注意到的行为.

该部分看起来像这样:

foreach(MyClass cItem in checkedListBoxItemList.Items)
{
   foreach(MyClass cActiveItem in ActiveItemList)
   {
      if (cActiveItem.ID == cItem.ID) /*...check checkbox for item...*/;
   }
}
Run Code Online (Sandbox Code Playgroud)

可以说,checkedListBoxItemList.items包含4个MyClass类型的项目,而ActiveItemList是包含2个Items的List <MyClass>.

调试器跳转到外部foreach,到达内部foreach,执行if 2次(每个cActiveItem一次)并到达外部foreach的末尾.现在,调试器跳回到foreach外部的头部.但是调试器不是启动外部foreach的第二轮,而是突然跳转到MyClass.ToString()方法.我可以通过这个方法4次(checkedListBoxItemList.Items中的项目数),然后......没有.Visual Studio向我展示了我的窗体,并且不再继续使用foreach.

将代码更改为时

int ListCount = checkedListBoxItemList.Items.Count;
for(int i=0; i<ListCount; i++)
{
   MyClass cItem = checkedListBoxItemList.Items[i] as MyClass;
   foreach(MyClass cActiveItem in ActiveItemList)
   {
      if (cActiveItem.ID == cItem.ID) /*...check checkbox for item...*/;
   }
}
Run Code Online (Sandbox Code Playgroud)

一切正常,按照假设.我向同事展示了这个问题,但他也不明白,发生了什么.我不明白为什么调试器会跳转到MyClass.ToString()方法.我用F10来逐步完成,所以不需要离开这个功能.甚至,如果有原因,为什么foreach循环不会继续?

我使用Visual Studio 2010,如果这是任何问题.

请告诉我发生了什么.谢谢.

c# debugging foreach behavior

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

WebApp密码管理 - 哈希,盐渍等

我正在网络应用程序中搜索最安全(但却可行)的密码管理方式.

现在,我将密码保存为哈希.的DB帐户该应用的被限制的存储过程和excecution我通过给出用户名和哈希密码到返回1(真)或0(假)存储过程验证用户.

因此,即使您拥有该应用的数据库帐户,也无法从服务器获取密码.多数民众赞成我喜欢这个解决方案.但是要使用它,客户端必须通过Web提交密码,或者至少是可以捕获的静态哈希.

所以我开始想到使用这样的握手:

  • 客户端要求服务器提供盐.
  • 随机盐被提供给客户端并存储在服务器上用于该单个客户端.
  • 客户端生成Hash(salt +密码)并将此哈希值返回给服务器
  • 服务器生成Hash(salt +密码)并检查它是否与客户端相同

使用此握手可以检查密码而无需发送自身或静态哈希.只是一个动态盐渍哈希,每次用户登录时都不同=>高度安全.

但是对于这次握手,我需要密码或者至少需要来自数据库的哈希密码.但这使得某人至少可以获得哈希密码并在应用程序外部强制使用它.

你更喜欢什么?将密码保存在数据库中并在那里制作任何东西(安全服务器),或者将其从数据库中取出并在外部进行(安全传输)?

马克斯,提前谢谢你

database security passwords hash

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