小编Mic*_*l J的帖子

在Visual Studio中关闭自动轮廓

任何人都可以告诉我如何关闭Visual Studio中的自动轮廓?概述是将代码折叠到程序员定义的区域中的功能.

在我看来,极少数情况下概述是有用的.是的,它使大文件更容易导航,但大多数它掩盖了复杂性.我倾向于在打开源文件时默认关闭此功能.

visual-studio

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

如何在VS2010中指定用于转换文件的"自定义工具"?

对于大多数文件类型(例如.cs,.xml,.xslt),VS2010中的"属性"窗口允许用户指定用于转换文件的自定义工具.作为参考,这是选择"自定义工具"字段时获得的工具提示.

指定在设计时转换文件的工具,并将该转换的输出放入另一个文件中.例如,数据集(.xsd)文件附带默认自定义工具.

我正在寻找有关如何设置和使用此属性的信息.

这是我想解决的问题.我正在通过应用XSLT转换和XML文件.描述我在转换过程中使用扩展对象这里.

在这样做的过程中,我使Visual Studio无法用作编辑和调试我的XSLT的工具.我希望我能编写一个简单的转换引擎,它允许我们使用Visual Studio,就像我们对不使用扩展对象的XSLT文档一样.我认为(希望)自定义工具属性是实现此功能的关键.

TIA

xml xslt debugging visual-studio-2010

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

寻找解决方案,使DataGridView控件无法绑定到分层(OO)数据

看起来DataGridView控件只能绑定到平面的数据源(所有属性都是主要类型).我的数据是分层的.例如:

    interface INestedObj
{
    string Prop3 { get; }
}

interface IParentObj
{
    public string Prop1 { get; }
    public string Prop2 { get; }
    public INestedObj NestedObj { get; }
}
Run Code Online (Sandbox Code Playgroud)

鉴于此,如何绑定到实现IParentObj的对象?最终你面临着必须做这样的事情:

grid.Columns["prop1Col"].DataPropertyName = "Prop1";
grid.Columns["prop2Col"].DataPropertyName = "Prop2";

grid.Columns["prop3Col"].DataPropertyName = "How to display Prop3?";

grid.Columns["prop3Col"].DataPropertyName = "NestedObj.Prop3"; // does not work
Run Code Online (Sandbox Code Playgroud)

我正在寻找建议和/或解决方法.

TIA

data-binding controls winforms

5
推荐指数
2
解决办法
2103
查看次数

关于C#中数组下标的问题

回到C的旧时代,人们可以使用数组下标以非常有用的方式解决存储问题.例如,可以声明一个数组.

该阵列表示具有8位字的EEPROM图像.

BYTE eepromImage[1024] = { ... };
Run Code Online (Sandbox Code Playgroud)

然后将该数组称为真正的多维存储

BYTE mpuImage[2][512] = eepromImage;
Run Code Online (Sandbox Code Playgroud)

我确定我的语法错了,但我希望你能理解.

无论如何,这投影了真正的单维存储的二维图像.

二维投影表示当加载到具有16位字的MPU的存储器中时的EEPROM图像.

在C中,可以多维度地引用存储并更改值,并且更改的值将显示在真实(单维)存储中,几乎就像魔法一样.

是否有可能使用C#做同样的事情?

我们当前的解决方案使用多个数组和事件处理程序来保持同步.这样的工作,但如果有更好的方法,我们希望避免额外的复杂性.

c c# arrays multidimensional-array

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

在运行时唯一标识对象的选项?

我需要在运行时将唯一标识符附加到对象.标识符在应用程序期间必须是唯一的.我计划在我的对象模型的基类中有一个私有成员变量.此变量将在对象初始化时设置,并且该值将在对象的生命周期内保持不变.在应用程序的持续时间内,没有其他对象可以具有相同的标识符.

当然,我可以使用System.Guid,但每个对象需要128位存储空间,而且我希望消耗更少的资源.我尝试使用Int32并使用System.Environment.TickCount属性对其进行初始化,但是我得不到足够的分辨率,并且某些对象最终会分配相同的值.

TickCounter的文档说,TickCount属性将在~29之后滚动到负值,然后在另外29天内回到零.随着时间的推移,我会很乐意交换更多的分辨率.

我还有其他我不了解的选择吗?

c# performancecounter

5
推荐指数
2
解决办法
3155
查看次数

是否有可能用Linq替换这个foreach循环?

我有一个foreach循环,我想用Linq查询替换,但我无法弄清楚如何编写查询.请参阅下面的示例和TIA.

using System.Collections.Generic;
using System.Linq;

namespace ConsoleApplication
{
    class ExampleProgram
    {
        static void Main( string[] args )
        {
            Device device = new Device();

            // The goal is to populate this list.
            var list1 = new List<IMemory>();

            // I would like to replace this loop with a Linq query
            foreach( MemoryBank memoryBank in device.MemoryBanks )
            {               
                list1.Add( memoryBank ); // add the memory bank

                foreach( MemoryBlock memoryBlock in memoryBank.MemoryBlocks )
                    list1.Add( memoryBlock ); // add the memory block
            }

            //var list2 …
Run Code Online (Sandbox Code Playgroud)

c# linq foreach

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

如何在Windows窗体应用程序中实现控件验证?

我试图更好地了解验证如何在Windows窗体应用程序中工作.互联网上充满了琐碎的例子,但我找不到一个解释控制验证的非平凡的例子.无论如何,多亏了SwDevMan81Hans Passant,我从一个比昨天更好的地方开始.

"真正的应用程序"有一个包含许多TextBox控件的对话框.每个控件都实现Validating事件.正如您在示例中所看到的,ValidateChildren作为Click事件的结果被调用,导致Validating事件被发送到每个控件.该应用程序还使用ErrorProvider控件来提供用户反馈.昨天,我不明白如何使用Ok按钮Click事件来执行此验证.今天,我的对话框按预期工作.单击"确定"按钮会导致ErrorProvider执行控件无效且对话框未意外关闭的操作.

因此,虽然这似乎有效,但我感觉我"在线外".在Windows窗体应用程序中是否有用于控制验证的"最佳实践"文档/站点?

在许多令我困惑的事情中,当Ok按钮DialogResult属性设置为返回DialogResult.OK时,我无法找到对话框行为的解释.为什么设置此属性会干扰验证?(尝试使用和不使用该行的示例,看看我的意思.)

我昨天遇到的问题(看起来似乎)主要源于不了解ValidateChildren方法以及我将Ok按钮DialogResult属性设置为DialogResult.OK.将此属性设置为DialogResult.None似乎更改了Form类的一些自动行为.

TIA

using System;
using System.ComponentModel;
using System.Windows.Forms;

namespace ConsoleApp
{
    class Program
    {
        static void Main( string[] args )
        {
            Dialog dialog = new Dialog();

            if( dialog.ShowDialog() == DialogResult.OK )
                Console.Beep();
        }
    }

    public class Dialog : Form
    {
        TextBox m_TextBox0;
        TextBox m_TextBox1; // not validated
        TextBox m_TextBox2;

        Button m_OkBtn;
        Button m_CancelBtn;

        ErrorProvider m_ErrorProvider;

        public Dialog()
        {
            m_TextBox0 …
Run Code Online (Sandbox Code Playgroud)

c# events winforms

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

为什么我的按钮的'Validating'事件处理程序从未调用过?

在下面的迷你应用程序中,我想知道为什么永远不会调用BtnOk_Validating事件处理程序.我希望单击"确定"按钮可以调用事件处理程序.

真正的对话框有更多控件,每个控件都有一个验证事件处理程序.我的计划是在允许关闭对话框之前使用Ok按钮验证事件处理程序来调用每个其他事件处理程序.

如果不是很明显,那么对于Forms开发来说,我就是新手.

using System.ComponentModel;
using System.Windows.Forms;

namespace ConsoleApp
{
    class Program
    {
        static void Main( string[] args )
        {
            Dialog dialog = new Dialog();

            dialog.ShowDialog();
        }
    }

    public class Dialog : Form
    {
        Button m_BtnOk;
        Button m_BtnCancel;

        public Dialog()
        {
            m_BtnOk = new System.Windows.Forms.Button();
            m_BtnCancel = new System.Windows.Forms.Button();

            m_BtnOk.CausesValidation = true;
            m_BtnOk.DialogResult = DialogResult.OK;
            m_BtnOk.Text = "Ok";
            m_BtnOk.Location = new System.Drawing.Point( 0, 0 );
            m_BtnOk.Size = new System.Drawing.Size( 70, 23 );
            m_BtnOk.Validating += new CancelEventHandler( BtnOk_Validating );

            m_BtnCancel.CausesValidation = …
Run Code Online (Sandbox Code Playgroud)

c# events winforms

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