小编Mar*_*ell的帖子

删除循环中的控件

昨天我写了一段代码来删除满足特定条件的表单中的所有控件.写得天真,这就是我想出来的.

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.那么我可以要求更优雅的方式,最好不要使用循环吗?

.net c# winforms

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

C#委托和属性语法问题

我有一个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)

导致标准需要一个对象的东西 …

c# syntax

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

根据查询字符串显示完全不同的输出

我正在尝试学习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)

这对小事来说似乎只是好事.更改整个页面的最佳方法是什么?

asp.net query-string

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

我需要做直方图拉伸

我有一个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# image-processing histogram

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

在C#中使用Type对象作为泛型的类型参数

我找不到在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对象作为泛型的类型参数?

c# generics types

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

我可以在Linux上使用原生Excel图表生成Excel文件吗?

有没有办法在Linux上使用Perl生成Excel电子表格,以便我可以在Windows上打开电子表格并创建原生Excel图形?我知道有libs可以绘制图形,但我知道所有的lib只是简单地将图片插入Excel,当我在Windows上打开电子表格时看起来很奇怪.所以我想知道有没有办法做得更好?可能我可以嵌入VB脚本或其他东西,以便在我在Windows上打开电子表格时自动创建图形?必须在Linux上生成原始电子表格,因此无法使用OLE或其他一些Windows技术.


多谢你们!Spreadsheet :: WriteExcel似乎是一个很好的解决方案.乍一看是否允许更改数据的维度或者在模板文件中进行硬编码(例如,10分,不多也不少).有人知道吗?

如果有人知道另一种方式来完成我的任务,请在此处发布.我有兴趣比较不同的解决方案并选择最好的解决方案.

linux windows excel perl

5
推荐指数
3
解决办法
1290
查看次数

如何在c#中将希伯来语(unicode)转换为Ascii?

我必须创建某种文本文件,其中有数字和希伯来字母解码为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我得到相同的结果.

我做错了什么?

c# unicode encoding

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

使用protobuf-net进行质量过滤

我用protobuf-net序列化了一个对象列表.

从理论上讲,.bin文件可以包含数百万个对象.

假设对象属于包含以下内容的类:

public string EventName;
Run Code Online (Sandbox Code Playgroud)

我必须进行查询并创建一个包含与查询匹配的对象的列表.使用LINQ从序列化文件中提取匹配对象的正确方法是什么?

.net c# protobuf-net

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

如何在C#2.0中重写lambda表达式?

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中也没有

c#

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

如何解码protobuf二进制响应

我创建了一个测试应用程序,可以使用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"

protocol-buffers google-goggles

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