小编Dav*_* R.的帖子

使用LINQ获取两个列表之间的差异

我有两个列表,我需要比较它们,只返回不同时列出的项目列表.

var listOfIds = new List<int> {1,2,4};

var persons = new ObservableCollection<Person>
{
    new Person {Id = 1, Name = "Person 1"},
    new Person {Id = 2, Name = "Person 2"},
    new Person {Id = 3, Name = "Person 3"},
    new Person {Id = 4, Name = "Person 4"}
};
Run Code Online (Sandbox Code Playgroud)

在这个例子new Person {Id = 3, Name = "Person 3"}中将是结果.Linq解决方案将是首选.

.net c# linq list

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

WinForms验证事件阻止Escape键关闭表单

我有一个带有单个TextBox的简单表单,以及OK和Cancel按钮.Form的AcceptButton和CancelButton设置正确,OK和Cancel按钮的DialogResult设置为'OK'和'Cancel'.

我想在TextBox中添加验证,这将阻止用户在验证失败时对表单进行确认,但这也将允许它们像往常一样取消.

默认情况下,在所有控件上,CausesValidation属性为True,但我在取消按钮上将其更改为False.

果然,单击"确定"或按Enter键将运行我连接到TextBox的验证事件.按取消按钮绕过验证,这是完美的.

然而,按Escape取消形式并没有执行一样按下取消按钮-它引发Validating事件,并防止使用者从离开.

是否有任何方法可以使Escape键按预期执行,即不提高Validating事件,就像按下取消按钮一样?

一个完整的解决方案是:

创建一个新的Windows窗体应用程序.将第二个表单添加到项目中.

在InitializeComponent()之后将此代码粘贴到Form1的构造函数中:

MessageBox.Show((new Form2()).ShowDialog().ToString());
Run Code Online (Sandbox Code Playgroud)

这显示了从我们的第二个表单传回的DialogResult.

在InitializeComponent()之后将此代码粘贴到Form2的构造函数中:

TextBox txtName = new TextBox();

txtName.Validating +=
    new CancelEventHandler((sender, e) =>
    {
        if (txtName.Text.Length == 3)
        {
            MessageBox.Show("Validation failed.");
            e.Cancel = true;
        }
    });

Button btnOk = new Button
{
    Text = "OK",
    DialogResult = DialogResult.OK
};
Button btnCancel = new Button
{
    Text = "Cancel",
    CausesValidation = false,
    DialogResult = DialogResult.Cancel
};
FlowLayoutPanel panel = new FlowLayoutPanel();
panel.Controls.AddRange(new Control[] 
{
    txtName, btnOk, btnCancel 
}); …
Run Code Online (Sandbox Code Playgroud)

.net c# validation winforms

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

javascript中的MVC"〜"路径

我使用JavaScript代码来调用MVC Web API.当前路径为:

http://localhost/myApp/Administrator

但是当前路径是:

http://localhost/myApp/Administrator/

我收到了错误The resource cannot be found.以下是代码:

$.getJSON("api/UserApi",
    function (data) {
        ...               
    });
Run Code Online (Sandbox Code Playgroud)

我不想在代码中使用绝对URL,例如:

$.getJSON("http://localhost/myApp/api/UserApi",          
    function (data) {
        ...    
    });
Run Code Online (Sandbox Code Playgroud)

绝对URL确实可以正常工作,但缺乏灵活性.有没有办法做同样的事情如下?

$.getJSON("~/api/UserApi",          
    function (data) {
        ...
    });
Run Code Online (Sandbox Code Playgroud)

ASP.NET支持用当前应用程序的根路径替换"〜"字符,例如:

http://localhost/myApp

但是,JavaScript文件中不支持"〜"字符.我如何完成同样的事情?

JavaScript是一个独立的文件,不能使用像ASP.NET这样的ASP.NET语句Url.Content.有没有更好的方法呢?

我找到了以下方法.有没有更好的解决方案?:

1)将以下代码写在.cshtml文件中

<script type="text/javascript"> 
    var currentDomain = '@Url.Content("~")';
</script>
Run Code Online (Sandbox Code Playgroud)

2)currentDomain从.js文件中读取变量:

$.getJSON(currentDomain + "/api/UserApi",          
    function (data) {
        ...        
});
Run Code Online (Sandbox Code Playgroud)

javascript asp.net path relative-path

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

WinForms DataGridView - 数据绑定到具有list属性的对象(可变列数)

我有一个.NET类,我想在DataGridView中显示,默认的数据绑定 - 将DGV的DataSource设置为对象 - 产生90%的需求(即它正确输出公共属性,我可以轻松添加排序) .

但是,我需要绑定的属性之一是List,其中包含需要在其他数据绑定项之后的单独列中的数据.我坚持认为如何最好地实现这一点.

我的班级看起来像这样:

public class BookDetails
{
    public string Title { get; set; }
    public int TotalRating { get; set; }
    public int Occurrence { get; set; }
    public List<int> Rating { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

理想情况下,我可以将Rating属性扩展为多个数字列,以便在运行时提供如下输出:

标题| 总评分| 发生| R1 | R2 | R3 ...... RN

将总评分计算为所有单个评级的总和也是有用的,但我现在手动更新而没有问题.

.net c# data-binding datagridview winforms

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

你会为新项目使用LINQ to SQL吗?

我一直在调查用于我正在设计的基于Web的新项目的数据层,我非常希望看到将LINQ加入SQL.它显而易见的简单性,灵活性和设计器支持确实很吸引人,并且与SQL Server的隐式绑定很好.

但是,最近已经宣布LINQ to SQL现在已经退回到实体框架,因为它已被传递给ADO.NET团队(http://blogs.msdn.com/adonet/archive/2008/10 /29/update-on-linq-to-sql-and-linq-to-entities-roadmap.aspx).当然,它将在未来得到支持,但它不太可能会看到更多的开发工作.

考虑到这一点,您是否会建议我将此技术用于我的项目,还是值得选择替代ORM(nHibernate?)或手动编写通用DAL?

该项目本身是基于ASP.NET和SQL Server 2005/2008的,并且可能会使用MVC,即使它仍处于测试阶段.这是一个个人项目,数据库不会过于复杂,主要用作查看.NET未来技术的原型.我将基于我从这一方面学到的东西来建立未来项目,所以我做出的选择将影响更大的解决方案.

是的,我意识到微软可能会在明天推出一种全新的数据访问技术!;)

.net orm linq-to-entities data-access-layer linq-to-sql

9
推荐指数
2
解决办法
1973
查看次数

为现有的WinForms应用程序添加Windows 8 touch支持

我有一个针对.NET Framework 4的现有Windows窗体桌面应用程序,并希望为其添加Windows 8触摸支持.

目前该程序在Windows 8中运行良好,我可能只是调整一些元素的大小,使其在触摸设备上更加用户友好.但是,添加手势(如数据网格上的双指缩放)以及滑动对其他元素的支持将大大有助于使应用程序在仅触摸环境中更加现代化.

我正在投资Visual Studio 2012,这将让我以.NET 4.5和新的Windows 8功能为目标,但有没有人知道任何可以帮助我更新我的应用程序的资源?我特别关注以下内容:

  • 无法在我的非触摸式开发机器上直接测试应用程序的触摸功能.微软的模拟器似乎只支持Metro应用程序.我听说像Splashtop这样的平板电脑应用程序可以提供帮助(我有一个Android平板电脑),但没有看到任何具体的特定情况
  • WinForms应用程序是否支持手势.我是否必须将整个UI升级到WPF以使其正常工作?(如果我确实采用了这条路线,我相信我也可以定位Windows 7,因为WPF 4支持多点触控)
  • 在运行时检测设备的触摸支持并适当地缩放/更改UI,类似于Microsoft Windows RT Office应用程序上的触摸模式设置.我不想仅仅为了添加新功能而分叉项目
  • 触摸交互的自动测试

这绝不是一个详尽无遗的清单,但我非常感谢那些可能在过去接近过类似升级的人的建议.

.net user-interface touch winforms windows-8

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

在应用配置转换期间或之后,如何让Octopus进行变量替换?

我想从我的web.config.[environment]转换文件中引用我在部署项目中定义的变量(作用于环境).当我这样做时,变量引用最终会在转换后的web.config中结束,而不会被替换.

configuration variable-substitution octopus-deploy

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

检查字符串是否以括号中的数字开头

我的头衔看起来像

(10) - lorem ipsum
(101) - lorem ipsum
(1) - lorem ipsum
lorem ipsum
Run Code Online (Sandbox Code Playgroud)

我想(number)在开始时检查我的标题是否包含

string.match(/^(+[0-9]+)+$/);
Run Code Online (Sandbox Code Playgroud)

我对正则表达式不擅长,有人可以帮忙说出什么问题吗?

javascript regex

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