当用户在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)
我还尝试将工作按钮设置为默认值,但按下输入时不会执行.
谢谢你的帮助.
我需要一些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 …
我遇到了问题,我发现的所有文章或例子似乎都不关心它.
我想在事务中执行一些数据库操作.我想做的与大多数例子非常相似:
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 Trans在try块内声明了.所以它在catch()块中是不可访问的.大多数例子只是在阻止之前Conn.Open()和Conn.BeginTransaction()之前try,但我认为这有点风险,因为两者都可以抛出多个异常.
我错了,还是大多数人都忽略了这种风险?如果发生异常,什么是能够回滚的最佳解决方案?
我想隐藏Windows 7任务栏中的应用程序.
我希望在屏幕边缘做一些工具栏,当用户点击它时会做某些事情,但我不希望它显示在任务栏中,因为它是我想要留在后台的东西.
我尝试了以下帖子中的说明,但它对我的应用程序无效:
然后我尝试了一个新的空VCL表单应用程序,它仍然无法正常工作.我搜索了其他解决方案,但它们都像链接的帖子一样做得非常相似.
有什么变化,这在Windows 7中是不可能的吗?或者你能想到什么,可以阻止它工作?
我希望有一个简单的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?
谢谢你的帮助
我有一个Visual Studio 2010数据库项目,我想从中生成一个脚本,只需将此数据库放到另一台机器上.问题是我无法找到解决方案.
当我开始这个项目时,我从我的开发电脑上的数据库导入了shema.生成了模式对象,并在"模式对象 - >模式 - > dbo"下的所有表和脚本.随着时间的推移,有些事情发生了变化 通过右键单击 - > deploy,可以成功更改我的本地数据库.
但现在我想部署到另一台机器.问题是,在项目的release文件夹中,只有一个xml dbschema文件,其中包含我无法使用sql management studio导入的所有表和脚本(或者我只是找不到如何)和部署脚本只是一些检查,后面是部署前和脚本后的脚本,但没有任何表或脚本.
那么,请问如何从Visual Studio导出数据库,以便我可以轻松地将其放在另一台机器上?
我目前正在进行简单的数据签名.这是我第一次使用签名,所以也许我只是做错了.但我不认为使用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.
这需要那么久还是有错误,这是正常的吗?
谢谢你的帮助.
我有一个窗口,我在其中显示一张图片.我希望用户能够调整此窗口的大小,但保持它与图像的纵横比相同,因此窗口上不会出现大的空白区域.
我在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事件.
你知道任何解决方案是否有平滑的宽高比调整大小?
谢谢你的帮助.
今天我编写了一个使用两个嵌套的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,如果这是任何问题.
请告诉我发生了什么.谢谢.
我正在网络应用程序中搜索最安全(但却可行)的密码管理方式.
现在,我将密码保存为哈希.的DB帐户该应用的被限制的存储过程和excecution我通过给出用户名和哈希密码到返回1(真)或0(假)存储过程验证用户.
因此,即使您拥有该应用的数据库帐户,也无法从服务器获取密码.多数民众赞成我喜欢这个解决方案.但是要使用它,客户端必须通过Web提交密码,或者至少是可以捕获的静态哈希.
所以我开始想到使用这样的握手:
使用此握手可以检查密码而无需发送自身或静态哈希.只是一个动态盐渍哈希,每次用户登录时都不同=>高度安全.
但是对于这次握手,我需要密码或者至少需要来自数据库的哈希密码.但这使得某人至少可以获得哈希密码并在应用程序外部强制使用它.
你更喜欢什么?将密码保存在数据库中并在那里制作任何东西(安全服务器),或者将其从数据库中取出并在外部进行(安全传输)?
马克斯,提前谢谢你
c# ×3
database ×2
delphi ×2
hash ×2
wpf ×2
ado.net ×1
behavior ×1
command ×1
count ×1
cryptography ×1
debugging ×1
delphi-2007 ×1
events ×1
foreach ×1
forms ×1
grid ×1
gridsplitter ×1
passwords ×1
rollback ×1
security ×1
sql ×1
sql-server ×1
t-sql ×1
taskbar ×1
textbox ×1
transactions ×1
winapi ×1