小编Pet*_*teT的帖子

在C#中重用事件处理程序的良好实践

在我当前的项目中,我在不同的选项卡中使用了四个网格视图.随着系统的开发,它们有一些共享方法,例如显示自定义工具提示和行时的右键菜单.

我现在正在进行代码清理练习.我在下面看到的是,我现在有四个事件处理程序调用相同的方法.是否可以将事件处理程序更改为直接指向GridMenu,从而避免额外的代码?这会在以后的开发中引起我的问​​题吗?

显然目前我使用默认的偶数处理程序名称.

private void grdEnquiriesLevel1_ShowGridMenu(object sender, GridMenuEventArgs e)
    {
        GridMenu(sender, e);
    }

    private void grdApplicantsLevel1_ShowGridMenu(object sender, GridMenuEventArgs e)
    {
        GridMenu(sender, e);
    }

    private void grdApplicationsLevel1_ShowGridMenu(object sender, GridMenuEventArgs e)
    {
        GridMenu(sender, e);
    }

    private void grdInterviewsLevel1_ShowGridMenu(object sender, GridMenuEventArgs e)
    {
        GridMenu(sender, e);
    }

    private void GridMenu(object sender, GridMenuEventArgs e)
    {
        GridView view = (GridView)sender;

        if (view.CalcHitInfo(e.Point).InRow)
            popupMenu1.ShowPopup(Cursor.Position);
    }
Run Code Online (Sandbox Code Playgroud)

.net c#

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

C#检查或强制命名约定

我继承了以前开发人员的一些程序,他们对命名变量,方法和类具有不同的大小写,有时候还有下划线,这些程序有点草率.

在visual studio中是否有一个程序或方法来验证每个变量,方法,属性,常量,类的命名....我会对标准的C#约定很好.

c# naming-conventions

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

用户控制停靠属性

我试图让我自己的用户控制并几乎完成它,只是试图添加一些抛光.我希望设计器中的选项"Dock in parent container".有谁知道如何做到这一点我找不到一个例子.我认为它与Docking Attribute有关.

c# user-controls attributes docking winforms

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

没有主键的事务复制(唯一索引)

我刚刚遇到一些令人不安的事情,我试图从一个设计不受我们控制的数据库中实现事务复制.这种复制是为了执行报告而不会对系统造成太大的负担.在尝试复制时,只有一些表发生了.

由于调查表没有主键,因此没有选择复制调查表,我认为如果我使用ODBC和ms访问而不是在管理工作室中,它甚至不会显示为主键.查询也不是非常慢.

我尝试插入一个重复的记录,它没有说出一个唯一的索引(不是主键).似乎是使用唯一索引实现的表与主键相对.为什么我不知道我会尖叫.

无论如何都要执行事务复制或替代方案,它需要是实时的(最后一两分钟).主db服务器目前是sql 2000 sp3a和报告服务器2005.

我目前唯一想到的尝试就是将复制设置为另一种类型的数据库.我相信复制说oracle是可能的,这会强制使用像我假设访问正在使用因此显示主键的ODBC驱动程序.我不知道这是否准确无误.

sql-server primary-key transactional-replication

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

当sql server脱机时,禁用(礼貌地)网站

我在一所大学工作,并且一直在开发一个ASP.NET网站,其中有许多关于学生的报告,出勤统计数据......数据的基础是MSSQL服务器数据库,它是我们学生管理系统的后端.这在周四早上有一个固定的维护期,持续时间不明(取决于必须做什么).

大多数员工都意识到这一点,但不那么规律的用户似乎永远都会让我振作起来.在维护期间禁用站点的最简单方法是什么,显然我可以尝试数据库查询来测试它是否已启动但不确定最好的方法,例如将所有用户重定向到"网站已关闭以进行维护"消息,请记住,他们本可以在网站发布之前开始会议.

希望有些东西可以全局实现,而不是每页实现.

sql asp.net maintenance

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

LINQ单记录表单或默认情况下如果没有记录

我是LINQ的新手,到目前为止我很喜欢它,但是我试图通过请求单个记录(学生)来加载某些形式.如果这不存在我想要默认值,即空字符串假bool ...

所以我用过:

db = new DataClassesDataContext();        
student = db.ss_students.SingleOrDefault(p => p.student_id == studentID);
txtRegNumber.EditValue = student.car_reg_no;
Run Code Online (Sandbox Code Playgroud)

这在student.car_reg_no的分配上失败了.我意识到我似乎误解了SingleOrDefault方法,如果找不到记录,它实际上会为学生返回null.我出于某种原因认为它会返回每个字段的默认值,例如student.car_reg_no.我想我仍然在数据库模式下思考.

这不是我可以做这样的代码的问题:

db = new DataClassesDataContext();        
student = db.ss_students.SingleOrDefault(p => p.student_id == studentID);
if (student != null) 
{
        txtRegNumber.Text = student.car_reg_no;
        //assign more control values
}
Run Code Online (Sandbox Code Playgroud)

默认值可以分配给else中的控件,也可以直接分配给表单.

但这是正确的做法还是我错过了什么?

编辑 感谢帖子到目前为止我已经开始采用Marc Gravell建议的方法.我现在有点进一步了.

我现在正在尝试将数据保存回数据库,如果我正在更新或插入记录,我将如何知道.我应该添加bool来记录这个或者是他们的内置方式.

c# linq

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

给定编码中的xml无效字符

我试图验证我的xml对它的xsd并在给定的编码中获取错误无效字符.我用来验证的代码如下:

private static void ValidatingProcess(string XSDPath, string xml)
    {
        MemoryStream stream =
            new MemoryStream(ASCIIEncoding.Default.GetBytes(xml));

        using (StreamReader SR = new StreamReader(XSDPath))
        {
            XmlSchema Schema = XmlSchema.Read(SR, ReaderSettings_ValidationEventHandler);
            XmlReaderSettings ReaderSettings = new XmlReaderSettings();
            ReaderSettings.ValidationType = ValidationType.Schema;
            ReaderSettings.Schemas.Add(Schema);

            ReaderSettings.ValidationEventHandler += ReaderSettings_ValidationEventHandler;
            XmlReader objXmlReader = XmlReader.Create(stream, ReaderSettings);

            bool notDone = true;
            while (notDone)
            {
                notDone = objXmlReader.Read();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

它在诸如é之类的字符上出错.所以我猜这是事实上UTF-8被指定为编码或我使用ASCIIEncoding在上面的代码中创建MemoryStream的方式.我已经尝试将xsd和xml中的编码更改为UTF-16,将内存流更改为UTF32,但似乎没有任何效果.有任何想法吗?

c# xml xhtml xsd

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

t-sql将日期分配到学年

我正在尝试将缺席日期分配到学年,学年是8月1日到7月31日.

所以我想要的是:
31/07/2007 = 2006/2007
02/10/2007 = 2007/2008
08/01/2008 = 2007/2008

有没有一种简单的方法在sql 2000服务器中执行此操作.

sql

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

C#Alpha Blend透明PictureBox

我的表单上显示了一个网络摄像头源,并希望在其上绘制.我打算用图片框来做这件事,我发现PictureBox不支持真正的透明度,而只是它所用的表格的颜色.它也不支持alphablending,这是我希望它显示的方式,类似于可以如何显示表单.

有谁知道如何做到这一点?或者实施了可以执行此操作的控件?

c# transparency alphablending

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

C#在运行时停止属性更改

我一直在尝试使用设计器中设置的一些自定义属性来构建用户控件.但是,控件涉及一些不应在运行时调整的互操作代码和设置.有没有办法在设计师代码最初设置后停止更改的值?

c# user-controls properties

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