我的项目是.NET/WinForms.
我有一个列表视图,总是填充项目.我希望它总是有选择.但是,如果单击列表视图项下方的空白区域,则会丢失选择.
该列表有多个selection = true和hide selection = false.
在我的C#3.5 Windows窗体应用程序中,我有一些SplitContainers.每个内部都有一个列表控件(dock fill).当焦点位于其中一个控件上并移动鼠标滚轮时,滚动显示现在聚焦的列表.
我的任务是滚动列表,该列表当前是鼠标悬停的,而不是选中的列表.是否可以在Windows窗体中?如果没有,是否可以使用PInvoke?
我从C#项目调用C++函数:
[System.Runtime.InteropServices.DllImport("C.dll")]
public static extern int FillSlist(out string slist);
Run Code Online (Sandbox Code Playgroud)
然后
try
{
FillSlist(out slist);
}
catch
{
}
Run Code Online (Sandbox Code Playgroud)
C++ DLL受第三方工具保护,因此在FillSlist真正执行之前正在执行一些代码.当执行第三方代码并且程序完全停止工作时,会发生一些非常糟糕的事情."try"既不会隔离问题也不会执行"AppDomain.CurrentDomain.UnhandledException".
有什么能帮助隔离C++函数与C#调用代码的崩溃吗?
我的C#应用程序使用SMO对用户选择的SQL Server实例进行各种操作.特别是,它改变了认证模式:
ServerConnection conn = new ServerConnection(connection);
Server server = new Server(conn);
server.Settings.LoginMode = ServerLoginMode.Mixed;
Run Code Online (Sandbox Code Playgroud)
更改登录后,应重新启动更多实例.但是,我在SMO中找不到任何方式来重启所选实例.
我试图谷歌这个,但只发现了一堆枚举正在运行的服务并将其名称与SQL服务器服务名称进行比较的示例.我不喜欢这种方式,因为它容易出错并且依赖于Microsoft当前命名SQL服务器实例的方式.
有没有办法在SMO中重新启动所选实例?
在我的C#程序中,我做了各种耗费内存的操作.根据当前可用的内存量和各种非常量情况,程序在不同阶段失败并显示OutOfMemoryException.
我希望在某个时候停止处理,因为在不久的将来,程序会因OOM而失败.
但是,没有固定的门槛; 其他用户可能拥有更多(或更少)内存,另一个具有内存特定功能的操作系统等等.
我不想只检查软件消耗超过500MB,因为这可能是限制太高或太低.
有没有可靠的方法来预测即将推出的.NET中的OOM?
在我的.NET应用程序中,我将连接到Microsoft SQL Server 2005或2008数据库.用户选择应用程序显示它的实例,然后应用程序应该对此实例执行某些操作.我从注册表中获取实例名称,HKLM\Software\Microsoft\Microsoft SQL Server\Instance Names\SQL.
我不知道用户是否选择了默认实例或命名实例(并且Instance Names注册表值中没有此类信息).但是,为了连接到任意实例,我应该使用其中一个
Server=(local)
Run Code Online (Sandbox Code Playgroud)
要么
Server=MSSQLSERVER\instance_name
Run Code Online (Sandbox Code Playgroud)
在我的ADO.NET连接字符串中.我只能使用一个连接字符串模板吗?我尝试将Server = MSSQLSERVER\MSSQL10.MSSQLSERVER用于我的默认SQL Server 2008实例,但连接失败.
.net sql-server ado.net connection-string database-connection
我的C#.NET 3.5应用程序使用MS SQL Server 2008 Express.我正在向数据库写入大量数据.在某些时候,我得到一个例外:
无法为对象'dbo.Attachment'.'PK_ Attachme _3214EC0707020F21'在数据库'Cases'中分配空间,因为'PRIMARY'文件组已满.通过删除不需要的文件,删除文件组中的对象,向文件组添加其他文件或为文件组中的现有文件设置自动增长来创建磁盘空间.
在数据库中查看我看不出任何问题:初始大小设置为4Gb,自动增长由1Mb设置(然后我将其设置为10%),但这没有任何区别.
属性的常规页面显示数据库大小为4117M,可用空间为0.15M.为什么不自动增加尺寸?快递限制吗?
在我的C#.NET 3.5应用程序中,我在NHibernate上使用CastleProject ActiveRecord.这是使用MS SQL Server 2008的桌面应用程序.我已将ADO命令超时设置为0以防止批量操作期间的超时异常:
<activerecord>
<config>
...
<add key="hibernate.command_timeout" value="0" />
</config>
</activerecord>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
...
<property name="command_timeout">0</property>
</session-factory>
</hibernate-configuration>
Run Code Online (Sandbox Code Playgroud)
但是,我仍然收到超时异常!NHibernate日志显示如下:
在某处开始:
2010-10-02 06:29:47746 INFO NHibernate.Driver.DriverBase - 设置ADO.NET命令超时为0秒
到最后的某个地方:
2010-10-02 07:36:03020 DEBUG NHibernate.AdoNet.AbstractBatcher - 闭IDbCommand的,开放的IDbCommand S:0 2010-10-02 07:36:03382 ERROR NHibernate.Event.Default.AbstractFlushingEventListener - 无法SYN chronize数据库状态与会话NHibernate.HibernateException:执行批处理查询---> System.Data.S qlClient.SqlException时发生异常:超时过期.操作完成之前经过的超时时间或服务器没有响应.在System.Data.SqlClient.SqlConnection.OnError(SqlException异常,布尔breakConnection)
怎么会?如何解决这个问题?
nhibernate timeout castle-activerecord sqlexception command-timeout
在我的C#.NET 3.5应用程序中,我使用WinForms表单进行对接和锚定.我正在使用大显示屏和小型笔记本电脑上工作.
一些表单有一个列表视图,锚点设置为4个边界和下面的几个按钮.
我的表单显示不正确:如果我在台式计算机上编辑表单,在笔记本上最低的按钮将不会显示(将被容器边界剪切),我只看到拉伸列表视图.如果我在笔记本电脑上编辑表格,则在桌面计算机上它不会完全填满容器.
我找到了原因 - 表格的AutoScaleDimensions对于这两台计算机不同,在桌面上它是(8F,16F),而在笔记本电脑上则是(6F,13F).我很困惑如何使我的GUI在两者上工作?
c# ×4
winforms ×3
sql-server ×2
.net ×1
ado.net ×1
autosize ×1
c++ ×1
listview ×1
mousewheel ×1
nhibernate ×1
scroll ×1
smo ×1
sqlexception ×1
timeout ×1