小编Mat*_*ton的帖子

Windows窗体的UI设计模式(如WPF的MVVM)

MVVM最常用于WPF,因为它非常适合它.但是Windows Forms怎么样?对于Windows Forms,是否存在已建立且常用的方法/设计模式?一个与Windows Forms明确协作的一个?有没有一本书或一篇文章能够很好地描述这一点?也许MVP或MVC基于?

design-patterns winforms

152
推荐指数
5
解决办法
8万
查看次数

使用LINQ检查列表是否为空

什么是"最佳"(考虑到速度和可读性)的方式来确定列表是否为空?即使列表是类型IEnumerable<T>且没有Count属性.

现在我在这之间折腾:

if (myList.Count() == 0) { ... }
Run Code Online (Sandbox Code Playgroud)

还有这个:

if (!myList.Any()) { ... }
Run Code Online (Sandbox Code Playgroud)

我的猜测是第二个选项更快,因为它会在看到第一个项目后立即返回结果,而第二个选项(对于IEnumerable)将需要访问每个项目以返回计数.

话虽如此,第二个选项看起来是否可读?你更喜欢哪个?或者你能想出一个更好的方法来测试空列表吗?

编辑 @ lassevk的响应似乎是最合乎逻辑的,再加上一些运行时检查,如果可能的话,使用缓存计数,如下所示:

public static bool IsEmpty<T>(this IEnumerable<T> list)
{
    if (list is ICollection<T>) return ((ICollection<T>)list).Count == 0;

    return !list.Any();
}
Run Code Online (Sandbox Code Playgroud)

.net c# linq list

122
推荐指数
5
解决办法
13万
查看次数

从Windows窗体打开URL

我正在尝试从Windows窗体提供指向我公司网站的链接.我希望表现良好,并使用用户首选的浏览器启动.

从Windows窗体应用程序在用户的默认浏览器中打开URL的最佳方法是什么?

.net winforms

73
推荐指数
5
解决办法
8万
查看次数

我可以在XAML(.NET 4 Framework之前版本)中指定泛型类型吗?

在XAML中,我可以声明一个DataTemplate,以便在显示特定类型时使用该模板.例如,此DataTemplate将使用TextBlock显示客户的名称:

<DataTemplate DataType="{x:Type my:Customer}">
    <TextBlock Text="{Binding Name}" />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以定义一个将在IList <Customer>显示时使用的DataTemplate.因此,如果ContentControl的内容是ObservableCollection <Customer>,它将使用该模板.

是否可以使用{x:Type}标记扩展在XAML中声明类似IList的泛型类型?

c# generics wpf xaml

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

WPF打印/报告的最佳方法是什么?

我有一个即将开展的项目,必须能够从其数据中打印简单的报告.它将基于WPF,我想知道要走哪条路.

我知道WPF引入了自己的打印技术(基于XPS),看起来非常容易使用.但是,我的一部分想知道使用ReportViewer控件并将其嵌入Windows窗体主机控件是否更容易,因为这将使用户能够导出为各种格式以及打印.

有没有人有WPF打印/报告的经验?你会推荐哪个方向?

printing wpf reporting

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

WPF中的数字数据输入

您如何处理WPF应用程序中的数值输入?

没有NumericUpDown控件,我一直在使用TextBox并使用下面的代码处理它的PreviewKeyDown事件,但它非常难看.

有没有人发现更优雅的方式从用户那里获取数字数据而不依赖第三方控件?

private void NumericEditPreviewKeyDown(object sender, KeyEventArgs e)
{
    bool isNumPadNumeric = (e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9) || e.Key == Key.Decimal;
    bool isNumeric = (e.Key >= Key.D0 && e.Key <= Key.D9) || e.Key == Key.OemPeriod;

    if ((isNumeric || isNumPadNumeric) && Keyboard.Modifiers != ModifierKeys.None)
    {
        e.Handled = true;
        return;
    }

    bool isControl = ((Keyboard.Modifiers != ModifierKeys.None && Keyboard.Modifiers != ModifierKeys.Shift)
        || e.Key == Key.Back || e.Key == Key.Delete || e.Key == Key.Insert
        || e.Key == Key.Down || e.Key …
Run Code Online (Sandbox Code Playgroud)

c# wpf

65
推荐指数
4
解决办法
6万
查看次数

如何在文本框中找到光标的位置?C#

我有一个标准的WinForms TextBox,我想在文本中的光标位置插入文本.我怎样才能获得光标的位置?

谢谢

c# cursor-position

55
推荐指数
4
解决办法
9万
查看次数

在创建新GUI时,WPF是Windows Forms的首选吗?

Windows窗体的大多数限制和技巧对大多数程序员来说都很常见.但是从.NET 3.0开始,还有WPF可用,Windows Presentation Foundation.据说你可以用它来使"性感应用程序"变得更加容易,并且使用.NET 3.5 SP1可以很快地提高执行速度.

但另一方面,很多事情与WPF有所不同.我不会说这更难,但你必须从头开始学习"一切".

我的问题:当你必须创建一个新的GUI并且项目没有时间压力时,是否值得花费额外的时间?

.net wpf .net-3.0 .net-3.5 winforms

47
推荐指数
20
解决办法
5万
查看次数

在Web开发中处理多屏幕分辨率和宽高比的策略

回到当天,800 x 600是设计的屏幕分辨率 - 也许是640 x 480.然后是1024 x 768等,等等.

但后来情况变得更糟:现在我们不仅有不同的分辨率,还有不同的宽高比.

人们使用什么策略来适应当今不断扩大的屏幕尺寸和宽高比范围?

(顺便说一下 - 我只考虑笔记本电脑/台式机硬件,当然也有智能手机和平板电脑也要考虑.)

css aspect-ratio screen-resolution

47
推荐指数
4
解决办法
5万
查看次数

在没有行的情况下将表的可见性设置为false(在报告服务中)

如果表没有行,有没有办法将表的可见性设置为false?

我希望在Reporting Services中没有行时隐藏它.

在这种情况下,将NoRows设置为=""是不够的,因为表格仍留有空间,并且某些表格的格式仍然可见.

我正在使用Microsoft Visual Studio/SQL Reporting Services 2005

report reportingservices-2005 reporting-services

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