Tag: .net

如何在C#中使用sftp

可能重复: 如何在C#/ .NET中将文件上传到SFTP服务器? .net是否支持sftp ? 我在网上找不到任何样品。

如何清除System.Windows.Forms.WebBrowser会话数据?

如何在不重新启动应用程序的情况下清除当前会话数据(cookie,缓存数据,auth会话等)? 更新:我在谈论Windows.Forms中的WebBrowser控件,而不是ASP.Net会话。

LINQ – 选择每组最大属性值的记录

我有一个这样的数据集: GroupName GroupValue MemberName MemberValue ‘Group1’ 1 ‘Member1’ 1 ‘Group1’ 1 ‘Member2’ 2 ‘Group2’ 2 ‘Member3’ 3 ‘Group2’ 2 ‘Member4’ 2 ‘Group3’ 2 ‘Member5’ 4 ‘Group3’ 2 ‘Member6’ 1 我想要选择的是每个GroupName具有最大MemberValue的行,但仅适用于具有最大GroupValue GroupName ,并将它们传递给委托函数。 像这样: ‘Group2’ 2 ‘Member3’ 3 ‘Group3’ 2 ‘Member5’ 4 到目前为止我已经尝试过这种格式…… data.Where(maxGroupValue => maxGroupValue.GroupValue == data.Max(groupValue => groupValue.GroupValue)) .Select(FunctionThatTakesData) ……但这只是给了我Group2和Group3的每个成员。 我已经尝试在Select() GroupBy()之前放置一个GroupBy() ,但是将输出转换为IGrouping所以FunctionThatTakesData()不知道该如何处理它,我不能再做另一个Where()仅过滤掉最大的MemberValue 。 […]

如何在属性上实现双向绑定?

我知道有很多关于依赖属性的问题,我已经看了很多,但是它们似乎都没有解决我的问题。 我有一个像这样的窗口: 其中MyTextValue只是一个字符串属性,通知何时更改: private string _myTextValue = “Totally different value”; public string MyTextValue { get { return _myTextValue; } set { _myTextValue = value; OnPropertyChanged(); } } public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } TextInputWrapper也很简单: 代码隐藏: public partial class TextInputWrapper : UserControl { public static […]

C#DataGridView:将多行合并为一行但保留原件

首先:一旦我完成,我将自己提供这个问题的答案。 但是你可以在我的路上帮助我,我会感谢你的所有建议。 我有一个DataGridView与不同的行属于一起。 我的问题是找到一种合适的方式来显示和使用这些连接的行。 我的第一个想法是保持每一行的个性,但这有一些缺点: 如何清楚地显示行属于一起? 我可以添加另一列,其单元格显示连接行的相同数字,但这不容易看到,需要另一列。 我的解决方案是所有连接的行具有相同的背景颜色,并且对于每组连接的行,颜色在白色和浅灰色之间变化。 如何使用连接的行? 一旦我选择了一行的一行,我就必须通过提取哪些行属于一起的信息(保存在单元格的标签或隐藏的单元格中)来分析这一行,并选择它们。 在DataGridView中向上/向下移动行的工作量更大:我还需要分析相邻的行集以查看我必须移动多远。 因此我决定创建一个DataGridViewMultiRow 。 完成后,我将在这里发布该类的完整代码作为答案。 它将inheritanceDataGridViewRow (“DGVR”)并存储单个DGVR或其他多行的列表,并通过自己的代码绘制行的单元格将它们显示为一个。 但是,我仍然需要找出用于此目的的事件。 MSDN建议使用DataGridView.RowPrePaint ,但我更想使用绑定到DGVR本身的事件。 也许我会分析DataGridViewRow.Paint()的源代码并编写我自己的方法…… 当添加到多行时,单行将变为不可见(它们可以通过滥用概念再次切换到可见,但.net本身有很多不受滥用的保护;也许我甚至不切换看不见,所以这是用户的责任)。 通过强制每个DGVR成为与多行相同的DGV的一部分,可以简单地避免多行中的递归,并且因为每行只能添加到一个DGV并且只能添加一次,所以我不必检查递归了。 现在我正在努力如何实现内部行列表。 我正在考虑使用.net DataGridViewRowCollection ,但我发现它的操作与DataGridView本身紧密绑定:DGV只能有一个DGVRColl,但每个DGVRColl都引用一个DGV。 因此,我的每个DGVMultiRow中都会有半连接的DGVRColl。 我要问这是否会引起问题,但我已经发现在实例化DGVRColl时我必须提供一个DGV,这是DGVMultiRow ctor被调用的那一刻我没有的。 此外,当使用DGVRColl并为其提供公共get属性时,我只能挂钩’CollectionChanged’事件并且无法控制各个操作,如Add()和Remove() 。 所以我将使用一个简单的私人列表。 继续#1 我完成了主要工作,看起来已经很不错了: 我仍然需要修复细节,比如在移动滚动条和其他小东西时正确放置文本。 我决定不覆盖DataGridViewRow.Paint()因为那个内部连接太多了。 所以我第一次使用CellPainting事件,这是一个良好的开端。 但是我需要同时拥有该行的所有单元格的信息,所以我按照MSDN的建议继续覆盖DataGridView.RowPrePaint() ,请参阅上面的链接。 这非常有效。 未完待续。

启用/禁用RadDataGrid数据模板列中的按钮,它们具有在条件下绑定到它们的命令

我设置了一个bool属性并将其绑定到xaml中的IsEnabled,但ICommand CanExecute方法覆盖了xaml中的IsEnabled,因此我的bool属性无效。 当我在视图模型中定义CanExecute方法中的条件时,它会禁用方法所绑定的所有按钮,或者启用所有这些按钮。 它是一个网格,每行显示3个不同的按钮,每个按钮转到一个新的xaml屏幕。 如果按钮所在的行上没有特定条件的数据,则需要禁用该按钮。 我如何设置此项以便按钮在某种情况下被禁用? 自定义命令: public class CustomCommand : ICommand { private Action execute; private Predicate canExecute; public CustomCommand(Action execute, Predicate canExecute) { this.execute = execute; this.canExecute = canExecute; } public event EventHandler CanExecuteChanged { add { } remove { } } public bool CanExecute(object parameter) { //throw new NotImplementedException(); bool b = […]

Exchange Web Services 2010入门

我的任务是在.Net中编写一个SOAP Web服务,作为EWS2010和之前使用WebDAV连接到Exchange的应用服务器之间的中间件。 ( 据我所知,WebDAV正在消失EWS2010,因此应用服务器将无法再像以前那样连接,并且在没有WebDAV的情况下连接到EWS的指数更难。理论上就是在.Net中实现它。应该比其他任何事情都容易……对吧?! ) 我的最终目标是能够获取和更新指定Exchange帐户的电子邮件,日历项目,联系人和待办事项列表项。 (删除目前不是必需的,但我可以将其构建以供将来考虑,如果它很容易的话)。 我最初得到了一些示例代码,实际上确实有效,但我很快意识到它已经过时了。 使用的类型和类在当前文档中没有出现。 例如,用于创建与Exchange服务器的连接的方法是: ExchangeService svc = new ExchangeService(); svc.Credentials = new WebCredentials(AuthEmailAddress, AuthEmailPassword); svc.AutodiscoverUrl(AutoDiscoverEmailAddress); 对于它的价值,这是使用示例代码附带的程序集: Microsoft.Exchange.WebServices.dll (“MEWS”)。 在我意识到这不是当前实现连接的标准方法之前,它起作用了,我尝试在它上面构建并添加一个创建日历项的方法,我从这里复制了 : static void CreateAppointment(ExchangeServiceBinding esb) { // Create the appointment. CalendarItemType appointment = new CalendarItemType(); … } 马上,我遇到了ExchangeService和ExchangeServiceBinding (“ESB”)之间的区别; 所以我开始谷歌搜索试图找出如何获得ESB定义,以便CreateAppointment方法将编译。 我发现这篇博文解释了如何从WSDL生成代理类,我做了。 不幸的是,这导致了一些冲突,其中原始程序集中定义的类型, Microsoft.Exchange.WebServices.dll (示例代码附带)与我的新EWS.dll程序EWS.dll类型重叠(我从生成的代码编译Exchange服务器提供的services.wsdl )。 我排除了MEWSassembly,这只会让事情变得更糟。 我从一些错误和警告转到了25个错误和2,510个警告。 没有找到各种类型和方法。 这里显然有些不对劲。 所以我回去追捕。 […]

拼写检查winforms

在我的win form C#app中,我希望能够添加拼写检查function。 但是,我想以自己的方式做到这一点,而不是使用任何其他组件。 我只需要一个在线服务,我可以发送请求或其他东西,它告诉我我发送的单词是否拼写正确。 首选但不是必需的:该在线服务也能够发回建议。

WinForms应用程序的架构?

几个星期前我已经启动了一个WinForms项目,因为我真的不知道我想要什么function,所以我只是在路上添加它们。 这现在引起了一个可怕的混乱,我的MainForm是一个很大的泥球,例如一些重要的状态变化是由UI元素触发到我必须调用控件的OnChange事件,以便更改数据库中的某些状态。 简而言之:我刚刚开始了一个新项目,我希望采取更好的方法。 我只是不知道哪个是“好的”。 在ASP.net MVC中,我发现MVVM模式非常有用,但在桌面上,MVVM似乎只适用于WPF,而不适用于WinForms。 另一种方法是三层架构:我有我的数据库类,它目前直接与UI对话。 我现在创建一个新的静态类(“ApplicationState”),它与数据库进行通信并触发事件,告诉用户界面“嘿,有些东西改变了!”。 UI将操纵State,然后将处理数据库持久性,并在UI需要更新时再次引发事件。 这里的要点是ApplicationState类永远不会直接修改UI,但是UI订阅了Events。 这看起来像干净/“MVC-y”的方式,但也许我在这里忽略了什么? 基本上我的最终目标是让UI完全独立于数据库层,以确保我不再将业务逻辑连接到UI。

.NET 4中的multithreading改进

我听说.NET 4团队在框架中添加了新类,使得线程更好,更容易。 基本上问题是运行.NET 4中添加的multithreading任务的新方法是什么?它们设计用于什么? UPD:为了说清楚,我不是在寻找在.NET 4中运行并行任务的单一方法,我想找出哪些是新增的,并且如果可能的话, 每种情况都是最适合的对于..