昨天我写了一段代码来删除满足特定条件的表单中的所有控件.写得天真,这就是我想出来的.
for (int i = 0; i < this.Controls.Count; ++i)
{
if (this.Controls[i].Name.Length == 2)
{
this.Controls.Remove(this.Controls[i);
}
}
Run Code Online (Sandbox Code Playgroud)
但事实上代码是错误的.然后我将其更改为:
foreach (Control ctr in this.pbBoardImage.Controls)
{
if (ctr.Length == 2)
{
this.Controls.Remove(ctr);
}
}
Run Code Online (Sandbox Code Playgroud)
但它仍然不正确.我知道正确的方法是:
for (int i = this.Controls.Count - 1; i >= 0; i--)
{
if (this.Controls[i].Name.Length == 2)
{
this.Controls.Remove(this.Controls[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
然而,它仍然感觉不优雅.我无法使用List.RemoveAll,因为this.Controls不是List.那么我可以要求更优雅的方式,最好不要使用循环吗?
我有一个Dictionary [string,handler_func]类型的字典,其中
handler_func是一个类型的委托
public delegate void HANDLER_FUNC(object obj, TcpClient client);
Run Code Online (Sandbox Code Playgroud)
现在我有一个像这样的属性类
[AttributeUsage(AttributeTargets.Method)]
public class MessageHandlerAttribute : Attribute
{
public MessageHandlerAttribute(string s1, HANDLER_FUNC hf)
{
s1 = name;
msgtype = hf;
}
private string name;
public string HandlerName
{
get { return name; }
set { name = value; }
}
private HANDLER_FUNC msgtype;
public HANDLER_FUNC MessageName
{
get { return msgtype; }
set { msgtype = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
基本的想法是我将此属性应用于类中的方法,并在某处使用反射来填充上面的Dictionary
问题是除非这种方法是静态的,否则atrribute不能正常工作
[MessageHandlerAttribute("HandleLoginResponse",HandleLoginResponse)]
private void HandleLoginResponse(object obj, TcpClient client)
Run Code Online (Sandbox Code Playgroud)
导致标准需要一个对象的东西 …
我正在尝试学习asp.net(vb.net),我遇到了一些麻烦.我想根据查询字符串更改页面内容.
在经典的asp我会做:
<% If request.querystring("page") = 1 THEN %>
Run Code Online (Sandbox Code Playgroud)
- 整页 -
<% Else %>
Run Code Online (Sandbox Code Playgroud)
- 不同的页面 -
<% End If %>
Run Code Online (Sandbox Code Playgroud)
我能进入的最近的网络是.net
Sub Page_Load(ByVal Sender as Object, ByVal E as EventArgs)
If Request.QueryString("page") = 1 Then
lblMessage1.Text = "message"
Else
lblMessage1.Text = "message2"
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
这对小事来说似乎只是好事.更改整个页面的最佳方法是什么?
我有一个BitmapFrames数组,需要进行直方图拉伸.我知道这与直方图均衡化不同,最终结果是什么...... sorta.问题是我得到直方图后完全不知道该怎么做.
到目前为止,我的代码为直方图创建了一个数组,所以我知道每个值有多少像素.但在那之后我不知道该怎么做.
这是我到目前为止的代码...现在它使直方图然后直方图均衡......这不是我想要的...我只是想了解更多直方图
[Cmdlet(VerbsData.ConvertTo, "HistoStretch")]
public class HistoStretchCmdlet : PSCmdlet
{
private BitmapFrame[] bFrame, outFrame;
private BitmapSource src;
private double pixelsize;
private byte[] pixels, outPixels;
private byte MAX_VAL;
private int[] histogram;
private int cf, start;
[Parameter(ValueFromPipeline = true,
ValueFromPipelineByPropertyName = true), ValidateNotNullOrEmpty]
public BitmapFrame[] Bitmap
{
get
{
return bFrame;
}
set
{
bFrame = value;
}
}
protected override void ProcessRecord()
{
base.ProcessRecord();
Console.Write("Applying a histogram stretch to the image...\n\n");
outFrame = new BitmapFrame[bFrame.Length];
for (int c = …Run Code Online (Sandbox Code Playgroud) 我找不到在C#3.0/.NET 3.5的通用构造中使用第一类Type对象(System.Type实例)作为类型参数的方法.以下是我想要做的简化示例:
public void test()
{
Type someType = getSomeType(); // get some System.Type object
MyGeneric<someType> obj = new MyGeneric<someType>(); // won't compile
}
Run Code Online (Sandbox Code Playgroud)
有没有办法使用someType对象作为泛型的类型参数?
有没有办法在Linux上使用Perl生成Excel电子表格,以便我可以在Windows上打开电子表格并创建原生Excel图形?我知道有libs可以绘制图形,但我知道所有的lib只是简单地将图片插入Excel,当我在Windows上打开电子表格时看起来很奇怪.所以我想知道有没有办法做得更好?可能我可以嵌入VB脚本或其他东西,以便在我在Windows上打开电子表格时自动创建图形?必须在Linux上生成原始电子表格,因此无法使用OLE或其他一些Windows技术.
多谢你们!Spreadsheet :: WriteExcel似乎是一个很好的解决方案.乍一看是否允许更改数据的维度或者在模板文件中进行硬编码(例如,10分,不多也不少).有人知道吗?
如果有人知道另一种方式来完成我的任务,请在此处发布.我有兴趣比较不同的解决方案并选择最好的解决方案.
我必须创建某种文本文件,其中有数字和希伯来字母解码为ASCII.
这是在ButtonClick上触发的文件创建方法
protected void ToFile(object sender, EventArgs e)
{
filename = Transactions.generateDateYMDHMS();
string path = string.Format("{0}{1}.001", Server.MapPath("~/transactions/"), filename);
StreamWriter sw = new StreamWriter(path, false, Encoding.ASCII);
sw.WriteLine("hello");
sw.WriteLine(Transactions.convertUTF8ASCII("????"));
sw.WriteLine("bye");
sw.Close();
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我使用Transactions.convertUTF8ASCII()静态方法将可能的Unicode字符串从.NET转换为ASCII表示形式.我用术语希伯来语'shalom'然后回来'????' 而不是我需要的结果.
这是方法.
public static string convertUTF8ASCII(string initialString)
{
byte[] unicodeBytes = Encoding.Unicode.GetBytes(initialString);
byte[] asciiBytes = Encoding.Convert(Encoding.Unicode, Encoding.ASCII, unicodeBytes);
return Encoding.ASCII.GetString(asciiBytes);
}
Run Code Online (Sandbox Code Playgroud)
而不是将初始单词解码为ASCII我得到'????' 在我创建的文件中即使我运行debbuger我得到相同的结果.
我做错了什么?
我用protobuf-net序列化了一个对象列表.
从理论上讲,.bin文件可以包含数百万个对象.
假设对象属于包含以下内容的类:
public string EventName;
Run Code Online (Sandbox Code Playgroud)
我必须进行查询并创建一个包含与查询匹配的对象的列表.使用LINQ从序列化文件中提取匹配对象的正确方法是什么?
MatchEvaluator evaluator = (match) =>
{
var splitPos = match.Value.IndexOf("=\"");
var newValue = match.Value.Substring(0, splitPos + 2) +
"RetrieveBuildFile.aspx?file=" +
prefix +
match.Value.Substring(splitPos + 2);
return newValue;
};
Run Code Online (Sandbox Code Playgroud)
这段代码意味着什么,我需要将VS 2008中的这段代码移植到VS 2005,VS 2005中也没有
我创建了一个测试应用程序,可以使用Goggle Goggles识别一些图像.它适用于我,但我收到二进制protobuf响应.我没有原型文件,只是二进制响应.我怎样才能从中获取数据?(已经发送了一些熊的图像并获得了nex响应):
A
TuborgLogo9 HoaniText???;?)b???2d8e991bff16229f6"?
+TR=T=AQBd6Cl4Kd8:X=OqSEi:S=_rSozFBgfKt5d9b0
+TR=T=6rLQxKE2xdA:X=OqSEi:S=gd6Aqb28X0ltBU9V
+TR=T=uGPf9zJDWe0:X=OqSEi:S=32zTfdIOdI6kuUTa
+TR=T=RLkVoGVd92I:X=OqSEi:S=P7yOhvSAOQW6SRHN
+TR=T=J1FMvNmcyMk:X=OqSEi:S=5Z631_rd2ijo_iuf?
Run Code Online (Sandbox Code Playgroud)
需要得到字符串"Tuborg",如果可能的话 - "Logo"