我的DGV根据业务逻辑将行BackColors设置为各种颜色.当用户选择该行时,颜色变为所选择的行BackColor,从而模糊了预设颜色.我想在选择行时保留原始颜色,并指示选择行(可能)围绕所选行的粗体边框.这可能吗?我有一个简单的替代方案吗?
编辑 为了说清楚,这是一个WinForms应用程序.
是否有一种简单的方法来禁用组合框的下拉部分?我想在某些情况下阻止用户查看下拉部分中的项目.
编辑
感谢所有回复这么快的人!
我已经考虑过选择将文本框或标签放在与组合框相同的位置,然后根据需要隐藏组合框,但是基于复杂性驳回了这个想法(表单上有很多组合) .我也查看了简单模式,但这删除了组合的下拉按钮部分.我想我真正想做的是禁用组合,但看起来它没有被禁用,仍然允许用户选择显示的数据(例如复制和粘贴操作).
我有一个通用的List(Foo),它包含了Type Foo的n个对象.Foo的一个属性是PropertyA.PropertyA可以是ValueA,ValueB或ValueC之一.有没有一种简单的方法可以将它分成三个单独的列表,一个用于ValueA,一个用于ValueB,一个用于ValueC?
我可以编写一些循环原始列表的代码,并根据属性值将每个项目添加到新列表中,但这似乎不是很容易维护(如果我突然得到一个ValueD,那该怎么办?)
**编辑.我应该提到我正在使用该框架的2.0版本.
我需要通过代理下载很多页面.构建多线程Web爬网程序的最佳实践是什么?
是Parallel.For\Foreach是否足够好还是对于繁重的CPU任务更好?
您对以下代码怎么说?
var multyProxy = new MultyProxy();
multyProxy.LoadProxyList();
Task[] taskArray = new Task[1000];
for(int i = 0; i < taskArray.Length; i++)
{
taskArray[i] = new Task( (obj) =>
{
multyProxy.GetPage((string)obj);
},
(object)"http://google.com"
);
taskArray[i].Start();
}
Task.WaitAll(taskArray);
Run Code Online (Sandbox Code Playgroud)
它的工作非常糟糕.这很慢,我不知道为什么.
这段代码也很糟糕.
System.Threading.Tasks.Parallel.For(0,1000, new System.Threading.Tasks.ParallelOptions(){MaxDegreeOfParallelism=30},loop =>
{
multyProxy.GetPage("http://google.com");
}
);
Run Code Online (Sandbox Code Playgroud)
我认为我做错了什么.
当我开始我的脚本时,它只使用2%-4%的网络.
我正在使用ServiceStack请求过滤器,我想检查requestDTO参数的一个属性.此参数在运行时强类型,但在编译时是一个通用对象.
过滤器将用于多个服务调用,因此requestDTO类型将根据已调用的内容而更改.因此我无法对其进行特定演员表演.但是,无论类型如何,requestDTO对象都将始终具有名为"AppID"的字符串属性.这是我希望访问的属性.
这是我的代码(目前没有编译):
public override void Execute(ServiceStack.ServiceHost.IHttpRequest req, ServiceStack.ServiceHost.IHttpResponse res, object requestDto)
{
//Check only for non-local requests
if (!req.IsLocal)
{
var app = this._appIDs.Apps.Where(x => x.ID == requestDto.AppID).FirstOrDefault();
var errResponse = DtoUtils.CreateErrorResponse("401", "Unauthorised", null);
var contentType = req.ResponseContentType;
res.WriteToResponse(req, errResponse);
res.EndRequest(); //stops further execution of this request
return;
}
}
Run Code Online (Sandbox Code Playgroud)
这行不编译:
var app = this._appIDs.Apps.Where(x => x.ID == requestDto.AppID).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
我是否需要在这里处理反射以访问我的对象或者是否有一些内置于ServiceStack本身的方法?
让我解释.我已经定义了一个名为IEmployee的接口(ID,FirstName和Surname属性),但我还没有在任何类中实现该接口.
我想做的是:
Dim User as New IEmployee
User.ID = 1
User.FirstName = ""
User.Surname = ""
Call SomeFunction (User)
Run Code Online (Sandbox Code Playgroud)
VB.NET编译器似乎不喜欢这个.
编辑**谢谢大家,所有好点都做得很好!我将实例化一个具体的类.我只想尝试捷径:)
我需要确定是否可以将字符串解析为int数组.字符串可以是格式
"124,456,789,0"
如果它可以转换成如此:
int[] Ids = SearchTerm.Split(',').Select(int.Parse).ToArray();
Run Code Online (Sandbox Code Playgroud)
但是字符串也可能是这样的:
"这是一个字符串,非常好."
在这种情况下,解析失败.
根据字符串是否包含逗号字符(假设只有类似数组的字符串将包含此字符),逻辑当前分为两个方向,但此逻辑现在存在缺陷,并且逗号字符现在出现在其他字符串中.
我可以在它周围放一个Try..Catch,但我通常不利于控制异常的逻辑流程.
是否有捷径可寻?
我在代码重构后收到来自 Ninject 的异常。因此我知道是什么导致了错误,但无法确定原因。代码编译文件,但我从 Ninject 收到运行时错误:
不能为空参数名:root
我正在尝试注入一个类的常量实例:
var subscriptionApiClientHelper = new SubscriptionApiClientHelper(AppSettings.Get<string>("AdminAPIUrl"),
AppSettings.Get<string>("APIV2Key"), Kernel.Get<ICache>());
kernel.Bind<SubscriptionApiClientHelper>().ToConstant(subscriptionApiClientHelper);
Run Code Online (Sandbox Code Playgroud)
Ninject 在第一行抛出异常。
我的类 SubscriptionApiClientHelper 继承自另一个类(在 Nuget 包中引用),因此:
public SubscriptionApiClientHelper(string baseUrl, string apiKey, ICache cache) : base(baseUrl, apiKey)
{
_cache = cache;
}
Run Code Online (Sandbox Code Playgroud)
其构造函数是这样的:
public SubscriptionApiClient(string baseUrl, string apiKey)
{
_baseUrl = baseUrl;
_apiKey = apiKey;
}
Run Code Online (Sandbox Code Playgroud)
这个基类中的几个方法被覆盖并实现了缓存,因此覆盖的原因是我不需要在基类的所有方法上实现缓存。我从同一个 Nuget 包中注入了一些其他类,但没有问题,但这些没有我怀疑导致问题的继承。注意我成功地注入并使用了我继承的基类(SubscriptionApiClient),它只是导致问题的辅助类。
这是完整的堆栈跟踪:
at Ninject.ResolutionExtensions.GetResolutionIterator(IResolutionRoot root, Type service, Func`2 constraint, IEnumerable`1 parameters, Boolean isOptional, Boolean isUnique)
at Ninject.ResolutionExtensions.Get[T](IResolutionRoot root, IParameter[] parameters)
at AdminPortal.NinjectWebCommon.RegisterServices(IKernel kernel) …Run Code Online (Sandbox Code Playgroud) 我正在使用以下函数将DataTable(从数据层传递)中的列映射到对象属性.该函数存在于我正在填充的类中.该类有两个方法:Load()使用值加载对象,LoadAll()返回已填充对象的集合.我希望能够使用相同的代码来填充当前对象或新对象.然而,我对结果不太满意,主要是因为重复这是一个维护噩梦.
Private Function MapDataRowToProperties(ByVal dr As DataRow, ByVal target As Incident) As Incident
If target.Equals(Me) Then
Me.ID = Convert.ToInt32(dr.Item("pkIncidentID"))
Me.Description = dr.Item("IncidentDetail").ToString
Me.Created = Convert.ToDateTime(dr.Item("CreatedOn"))
...
Return Me
Else
Dim NewIncident As New Incident
NewIncident.ID = Convert.ToInt32(dr.Item("pkIncidentID"))
NewIncident.Description = dr.Item("IncidentDetail").ToString
NewIncident.Created = Convert.ToDateTime(dr.Item("CreatedOn"))
...
Return NewIncident
End If
End Function
Run Code Online (Sandbox Code Playgroud)
注意:我很清楚ORM工具会为我做这个,我通常使用EntitySpaces,但对于这个项目,我无法这样做.
我有一个DGV绑定到一个对象列表.这工作正常,除了其中一个对象属性是布尔值,因此显示为一个复选框,但我更喜欢一个简单的是/否文本字段.我已经考虑添加一个额外的列,并根据布尔值填充适当的字符串,但这似乎有点超过顶部.有没有更简单的方法?
DGV是只读的.
我正在尝试使用选择器从下拉列表中获取所选文本.如果我直接按名称引用下拉列表,它可以工作:
$('#aBigLongASP.NETWebformsGeneratedName_ddl_StateOfOption :selected').text()
Run Code Online (Sandbox Code Playgroud)
然而,我尝试使用选择器仅使用名称的最后部分来选择下拉列表:
$('#select[id$='ddl_StateOfOption']) :selected).text();
Run Code Online (Sandbox Code Playgroud)
但我似乎无法让它发挥作用.Chrome开发人员工具会抛出以下错误:
SyntaxError:意外的标识符
任何人都可以指出错误在哪里?
.net ×7
c# ×4
vb.net ×4
winforms ×3
datagridview ×2
.net-2.0 ×1
asp.net-mvc ×1
generics ×1
jquery ×1
ninject ×1
refactoring ×1
servicestack ×1
web-crawler ×1