小编Jeb*_*Jeb的帖子

禁用或灰显DataGridView

有没有简单的方法来禁用/灰显DataGridView?例如在做的时候

dgv.Enabled = false
Run Code Online (Sandbox Code Playgroud)

dgv的外观不会改变.我看到有人追加以下内容:

dgv.forecolor = gray
dgv.columnheader.forecolor = gray
Run Code Online (Sandbox Code Playgroud)

但是,这看起来很笨拙.有没有更好的办法?

.net c# datagridview winforms

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

如何在C#中以编程方式引用C:\ Users\Public目录

以编程方式引用公用文件夹是否安全:

Directory = System.Environment.GetEnvironmentVariable("public")+"MyCompanyName" // etc.
Run Code Online (Sandbox Code Playgroud)

或者,还有更好的方法?

再次,如果有人为公共删除环境变量,并且这对于不同的语言操作系统使用是否安全呢?

具体如下:如何从VS 2010部署安装项目安装到Windows 7中的Public目录

.net c# environment-variables

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

Open/SaveFileDialog类之间的区别以及它们在WPF表单中的使用

非常好奇,但只是想知道是否有人知道使用之间的区别:

System.Windows.Forms.SaveFileDialog(在Assembly System.Windows.Forms.dll中)和Microsoft.Win32.SaveFileDialog(在Assembly PresentationFramework.dll中)?

我在WPF表单中使用PresentationFramework.dll版本,但我目前正在重新使用表单中的一些旧代码,其中包括显示System.Windows.Forms.dll版本并想知道是否:

  1. 它们的外观有细微差别吗?
  2. 使用System.Windows.Forms.SaveFileDialog的任何互操作性问题?或者这两个只是win32对话框?
  3. 这与使用Microsoft.Win32.SaveFileDialog 在Windows Vista中有问题有关吗?

提前致谢.

.net c# wpf visual-studio-2010 winforms

15
推荐指数
1
解决办法
5852
查看次数

自动实现的属性和序列化

我正在经历很多代码和标记类,我现在想要使用Serialization属性来保存它们.我还没有编写二进制序列化/去同步引擎,所以我想在完成之后我会回答我自己的问题! - 但是如果可以的话,我想在这里尝试获得更早的回复.我遇到过一些包含如下属性的代码:

    public string Id
    {
        get;
        set;
    }
Run Code Online (Sandbox Code Playgroud)

"Id"是否被序列化?我知道在编译器下面自动创建一个类成员,但这是否正确序列化(因为类实例的所有数据成员都写入存储)?感觉它不会,因为您不能将Serialized/NonSerialized属性放在属性上.

提前致谢.

.net c# serialization

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

您可以将您的应用程序添加到OpenFileDialog中的位置栏吗?

我在Vista/7上注意到,当OpenFileDialog用于某些应用程序(例如MS Word,Visual Studio)时,它还在位置栏中包含应用程序本身,其中包含受支持类型的文档的收藏夹文件夹列表.例如

在此输入图像描述

有没有一种简单的方法可以为您自己的应用程序执行此操作,或者MS Word等是否使用OpenFileDialog的扩展版本,这意味着我需要扩展OpenFileDialog /自己编写以添加此功能?

.net c# openfiledialog visual-studio-2010

6
推荐指数
0
解决办法
460
查看次数

本地用户名不允许使用字符

目前,如果我尝试将本地用户"jim,bob"添加到Windows 7系统,正如预期的那样,将显示以下错误对话框,显示用户名的所有非法字符.是否有一个快速的.net方法来调用它返回相同的字符?例如

Path.GetInvalidPathChars();
Run Code Online (Sandbox Code Playgroud)

返回所有无效的路径字符.用户名是否有类似的方法?

在此输入图像描述

.net c# system-administration path

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

如何获取notepad.exe的确切路径以便关联文件扩展名

我需要将我创建的文件扩展名".rulog"与notepad.exe相关联,作为Windows 7计算机的安装项目安装的一部分(因为我们需要管理员权限才能写入注册表).

基本上我需要以编程方式获取notepad.exe的确切路径.现在,我知道它通常存在于C:\ Windows\system32中.这是PATH系统环境变量的一部分,所以我想我可以循环遍历所有PATH变量,并通过使用File.Exists将"notepad.exe"与当前路径组合来测试是否存在"notepad.exe".然而,这感觉非常笨拙.

基本上我需要添加一个条目

Computer\HKEY_CLASSES_ROOT\.rulog\shell\open\command\ 
Run Code Online (Sandbox Code Playgroud)

与记事本的路径的价值.

顺便说一句,我可以看到.txt:

Computer\HKEY_CLASSES_ROOT\.txt\ShellNew
Run Code Online (Sandbox Code Playgroud)

ItemName的值为

“@%SystemRoot%\system32\notepad.exe,-470”
Run Code Online (Sandbox Code Playgroud)

也许我可以复制这个值?或者这是危险的吗?(例如不存在).

.net c# registry notepad path

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

WPF模式窗口作为WinForms中的工具窗口消失

我想知道是否有人可以帮助我解决这个相当令人困惑的情况。我有一个WPF表单myForm,该表单在WinForm应用程序中以模态显示(不使用ElementHost)。如果我使用默认的WindowStyle,并且一切显示在任务栏中,则一切正常。但是,现在我不希望该表单显示在任务栏中或包含最小化按钮,因此我执行了以下操作:

MyForm myForm = new MyForm();
myForm.ShowInTaskbar = false;
myForm.WindowStyle = System.Windows.WindowStyle.ToolWindow;
myForm.WindowStartupLocation =System.Windows.WindowStartupLocation.CenterOwner;
myForm.ShowDialog();
Run Code Online (Sandbox Code Playgroud)

现在,wpf窗体将按预期方式显示,并且没有最小化按钮。如果我现在在任务栏中选择“父” winform应用程序,则wpf表单将消失,并且似乎没有任何返回它的方法!我读是相似但不相同的(纯WPF应用程序),所以我能理解为什么主要的应用程序不会在ALT + TAB菜单出现,但谁能告诉我怎么能回到WPF形式?

提前致谢。

.net c# windows wpf winforms

5
推荐指数
1
解决办法
1838
查看次数

从字符串列表中返回潜在字符串及其下一个字符性能

这是一个关于从字符串数组中高效返回字符串和字符的问题,其中:

  1. 字符串数组中的字符串以提供的用户输入开头
  2. 这些字符串的下一个字母作为字符集合.

这个想法是,当用户键入一个字母时,潜在的响应会与下一个字母一起显示.因此响应时间很重要,因此需要一个高性能算法.

例如,如果字符串数组包含:

string[] stringArray = new string[] { "Moose", "Mouse", "Moorhen", "Leopard", "Aardvark" };
Run Code Online (Sandbox Code Playgroud)

如果用户输入"Mo",那么"Moose","Mouse"和"Moorhen"应该与字符"o"和"u"一起返回以寻找潜在的下一个字母.

这感觉就像LINQ的工作一样,所以我作为静态方法的当前实现是(我将输出存储到一个Suggestions对象,该对象只有2个返回列表的属性):

public static Suggestions 
GetSuggestions
    (String userInput, 
    String[] stringArray)
{
    // Get all possible strings based on the user input. This will always contain
    // values which are the same length or longer than the user input.
    IEnumerable<string> possibleStrings = stringArray.Where(x => x.StartsWith(userInput));
    IEnumerable<char> nextLetterChars = null;

    // If we have possible strings and we have some input, get the next letter(s) …
Run Code Online (Sandbox Code Playgroud)

.net c# string algorithm performance

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