小编Fuz*_*ans的帖子

如何基于多个xml属性存储和查找数据?

我正在查询xml文件并为每个选择返回3个属性(符合我的条件的每个条目将返回3个属性详细信息).我需要存储这些值,然后查找第一个属性,并返回与其相关的其他2个存储属性.

var items = from item in doc.Descendants("SUM")
                        select new
                        {                                    
                            id = (string)item.Attribute("id"),
                            category = (string)item.Attribute("cat"),
                            selection = (string)item.Attribute("sel")
                        };
Run Code Online (Sandbox Code Playgroud)

上面的代码返回每个项目找到的3个属性.我需要存储这3个条目,以便它们关联在一起,然后再对存储的条目执行查找.例如,我需要能够查找id = 1的存储值,并返回相应的类别和选择条目.

我正在研究C#的Lookup方法,但不了解如何使用它.列表似乎可能有效,但我不知道如何将多个数据存储到列表中的条目中(可能连接成一个条目,但后来我不确定是否对它执行查找).任何关于如何使用LIST或LOOKUP(或其他未提及的方式)执行此操作的建议均值得赞赏.

c# linq lookup list

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

如何通过CMD修改文件的兼容性设置?

我有一个分发到多台计算机的包,其中包括一个将一些文件移动到目录中的批处理文件。被移动的文件之一是可执行文件 (.exe)。该exe将按计划运行,一旦批处理文件第一次运行并相应地移动文件,就不再使用它。

如果我右键单击.exe文件>> PropertiesCompatibility下面有一个选项Settings以管理员身份运行该程序。该应用程序似乎仅在以管理员身份运行时才能工作,因此我想在批处理文件运行时启用此设置。

有没有办法批量或通过 CMD 修改此设置?

我在搜索中继续找到的是如何以管理员身份运行 cmd,或者如何将 runas 命令添加到批处理中,以便批处理本身以管理员身份执行。由于批处理文件仅在安装时运行,并且不再运行,因此我需要一种方法来将 exe 本身设置为以管理员身份运行。

cmd administrator batch-file

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

刚删除后为什么我不能创建一个txt文件?

我的程序在启动时会创建一个日志文件.用户可通过设置"清除日志"选项,该选项调用删除日志文件的方法.

        //calls for a YesNo prompt to delete log or not
        result = objectMessageBox.ReturnDeleteLogPrompt();

        if (result == DialogResult.Yes)
        {
            //throw prompt
            if (File.Exists(objectLog.GetLogLocation()) == true)
            {
                try
                {                        
                    //delete the log file
                    File.Delete(objectLog.GetLogLocation());                        

                    //throw balloon tip saying log was cleared
                    ShowBalloonTip("LogCleared");
                }
                catch (Exception ee)
                {
                    MessageBox.Show("Error thrown deleting log: " + ee);
                    System.Windows.Forms.Clipboard.SetText(ee.ToString());
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

因为我已经完全删除了日志文件,所以我需要重新创建它.所以我调用一个方法:

try
        {
            //we create a new log file so it seems that the log has just been cleared
            objectLog.CreateLog();
        }
        catch (Exception …
Run Code Online (Sandbox Code Playgroud)

c# io logging delete-file

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

如何将我的表格中的面板保存为图片?

我有一个有2个面板的表格.我正在尝试将Panel2的内容保存为图像.我看到一个讨论使用屏幕截图的线程来执行此操作,但我再也找不到该线程了.另请阅读使用DrawToBitMap方法,但它来自visual studio 2005信息,不确定它是否是最新或最合适的解决方案.那么你建议将我的Panel2保存为图片,最好是jpg?

更新:我为DrawToBitMap实现了下面推荐的代码,但它保存了我的panel2的一半(左半部分,如果这有所不同).因为它保存了我的panel2的一半,所以我将宽度调用乘以'2'以使其保存完整的表单.一种奇怪的东西,对我来说没有意义,因为面板2的宽度应该是整个面板而不是它的一半?

//multiplies the width of panel2 call by 2 to make it save the full panel
Bitmap bmp = new Bitmap(splitContainer1.Panel2.Width * 2, splitContainer1.Panel2.Height);
splitContainer1.Panel2.DrawToBitmap(bmp, splitContainer1.Panel2.Bounds);
bmp.Save(@"C:\Test.bmp");
Run Code Online (Sandbox Code Playgroud)

c# system.drawing image panel

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

防止程序出现多个实例的最安全方法是什么?

我试图阻止我的程序在任何给定时间运行多个实例。我读过有关使用互斥体和 Windows 事件的内容,但是这两个线程都有好几年的历史了,我很好奇 .net4 是否有一种更简单、更优雅的方法来处理这个问题?我想我已经读过有关表单的设置,该设置允许您拒绝属性的多个实例?有人可以阐明防止程序出现多个实例的最安全和/或最简单的方法是什么吗?

.net c# mutex multiple-instances

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

如何在表单中编辑和保存设置?

我有一个包含多个文本框、单选按钮、复选框等的表单。现在我通过声明每个值并保存到程序设置来分别保存它们的值:

Properties.Settings.Default.EmailFrom = txtbxEmailFrom.Text;
Run Code Online (Sandbox Code Playgroud)

我想找到一种方法来遍历所有对象并尽可能保存它们的设置,这样我就不必单独声明每个对象。

有没有办法做到这一点?还是保存文本框文本、复选框和单选按钮等的检查状态的更好方法?

.net c# settings winforms

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

如何在不包含目录路径的情况下返回目录文件/文件夹?

我正在尝试提取文件夹中的文件列表,目前正在使用:

 string[] files = Directory.GetFiles(txtbxNewFolder.Text);
Run Code Online (Sandbox Code Playgroud)

但这会返回"C:\ Users\Dahlia\Desktop\New Folder\jerry.txt"之类的内容.有没有办法只返回"jerry.txt",还是我需要对数组字符串进行某种拆分?

我还试图返回目录中的文件夹列表,目前正在使用:

string[] folders = Directory.GetDirectories(txtbxOldFolder.Text);
Run Code Online (Sandbox Code Playgroud)

但这会返回"C:\ Users\Dahlia\Desktop\New Folder\folder1"之类的内容.有没有办法只返回"folder1",还是我需要对数组字符串进行某种拆分?

c# arrays directory io winforms

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

如何测试是否检查了TreeView节点和/或Nodes子节点?

我有一个带有TreeView列表的程序,该列表包含Nodes和带子节点。这些都具有复选框属性启用。我需要知道如何检查已检查的节点/节点子级。到目前为止,我已经能够成功测试父节点,但是没有子节点使用:

//this  will turn black any node that is checked, doesn't affect the children though
    TreeNodeCollection nodes = this.treeView1.Nodes;
                foreach (TreeNode n in nodes)
                {
                    if (n.Checked)
                    {
                        n.BackColor = Color.Black;   
                    }
                }
Run Code Online (Sandbox Code Playgroud)

我如何获得它来检查父节点以及子节点?我已经搜索过,但没有发现任何可以解决的问题。

c# treeview loops nodes winforms

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

如何按颁发者查找证书

我正在尝试循环遍历证书存储并确定证书是否具有特定的颁发者。我找到这篇文章,它提供了调用证书颁发者的示例:

            Console.WriteLine("{0}Issuer: {1}{0}", Environment.NewLine, x509.Issuer);
Run Code Online (Sandbox Code Playgroud)

但他们的示例似乎需要输入证书。是否可以循环遍历证书来识别计算机上是否有具有特定颁发者的证书?就像是:

ForEach(cert in x509certificate2.store)
{
    if (cert.issuer == SpecificIssuer)
    {
        console.writeline(cert.ToString());
    }
}
Run Code Online (Sandbox Code Playgroud)

如果可以进一步将循环范围过滤到这些特定存储,我尝试隔离的证书将属于特定存储(?),例如 [控制台根\证书(本地计算机)\个人\证书]。

c# loops certificate x509certificate

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

如何在多个表单之间使用 1 个 notifyIcon?

我在项目的主要表单中添加了一个 notifyIcon。我在项目中有其他表单,我希望能够使用 notifyIcon 虽然这证明很困难。在多个表单之间使用 1 notifyIcon 的最佳方法是什么?我读了一个关于不将它添加到表单而是在它自己的类中实例化它的线程,这对我来说毫无意义。想法?

c# forms class instantiation notifyicon

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

为什么创建我的自签名证书失败?

我正在尝试生成一个自签名证书,但无法完成它。我正在使用以下命令来创建自签名证书颁发机构:

makecert -n "CN=PowerShell Local Certificate Root" -a sha1 -eku 1.3.6.1.5.5.7.3.3 -r -sv root.pvk root.cer -ss Root -sr localMachine
Run Code Online (Sandbox Code Playgroud)

从所有方面来看,这都是可行的,我可以在“受信任的根证书颁发机构”下查看新条目。

接下来,我使用以下命令创建签名证书:

makecert -pe -n "CN=PowerShell User" -ss MY -a sha1 -eku 1.3.6.1.5.5.7.3.3 -iv root.pvk -ic root1.cer
Run Code Online (Sandbox Code Playgroud)

但是命令失败并显示:

Error: Can't load the issuer certificate ('root1.cer')
Failed
Run Code Online (Sandbox Code Playgroud)

我的印象是该-ic开关将创建root1.cer文件,但该错误似乎表明它无法加载?我在哪里错呢?

certificate self-signed makecert

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

如何调用存储在Dictionary中的动作?

我试图设置一个dictionary将其keys存储为itemsa listbox.

我已经能够建立一个dictionary然后keys输入它listbox,但我不知道如何然后执行与之相关的动作key.从上一个帖子中有一个建议,但我遇到了问题:原始线程

Dictionary<string, Action> dict = new Dictionary<string, Action>();
public void SetDictionary()
    {
       //add entries to the dictionary
        dict["cat"] = new Action(Cat);
        dict["dog"] = new Action(Dog);

        //add each dictionary entry to the listbox.
        foreach (string key in dict.Keys)
        {
            listboxTest.Items.Add(key);
        }                            
    }

     //when an item in the listbox is double clicked
     private void listboxTest_DoubleClick(object sender, EventArgs e)
     {
         testrun(listboxCases.SelectedItem.ToString());             
     }

     public void testrun(string …
Run Code Online (Sandbox Code Playgroud)

c# dictionary action listbox winforms

-4
推荐指数
2
解决办法
6457
查看次数