小编Mic*_*kus的帖子

如何使用一系列元素作为目标正确搜索和解析数组

我有一个字节数组,看起来像这样:

byte[] exampleArray = new byte[] 
                      { 0x01, 0x13, 0x10, 0xe2, 0xb9, 0x13, 0x10, 0x75, 0x3a, 0x13 };
Run Code Online (Sandbox Code Playgroud)

我的最终目标是在看到序列的任何时候将这个数组拆分成子数组{ 0x13, 0x10 }.所以我在示例数组上的期望结果将是:

{ 0x01 }
{ 0xe2, 0xb9 }
{ 0x75, 0x3a, 0x13 }
Run Code Online (Sandbox Code Playgroud)

理想情况下,我还需要知道最终数组{ 0x75, 0x3a, 0x13 }并没有以搜索顺序结束,因此我可以将其作为一个特例来处理.

有关最佳方法的任何想法?

.net c# arrays parsing

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

在项目开发过程中从VS2010升级到VS2012会有任何风险吗?

我在VS2010工作了大约两年的大型项目.我刚获得了VS2012的许可证,但我担心如果我删除VS2010并尝试在VS2012中处理该项目可能会发生什么.

这是一种非理性的恐惧,还是会有问题让项目编译?我的项目是C#,.Net 4,Winforms应用程序.

理想情况下,我只是在另一台计算机上加载VS2012并试一试,但我目前在计算机上运行时间不足.我已经读到了联合安装VS2010和VS2012的一些弊端.

.net c# ide visual-studio winforms

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

在没有用户输入的情况下以编程方式拆分MessageBox

我正在使用MessageBox不时为用户弹出警报消息.我的特定应用程序可以设置为远程运行,因此有时用户位于计算机前,有时用户可能不在计算机前几小时甚至几天.有时我会弹出一条警报消息MessageBox但在一段时间后警报不再相关.例如,我弹出一个警告,由于某些标准未得到满足,无法完成任务.几分钟后,该标准得到满足,任务就开始了.这MessageBox已不再适用.

我希望能够以编程方式关闭MessageBox这些消息不再相关的情况.这可能吗?目前我MessageBox使用以下方法在线程中创建我的对象:

new Thread(() => MessageBox.Show("Some text", "Some caption")).Start();
Run Code Online (Sandbox Code Playgroud)

我这样做,以便应用程序可以继续在后台工作,而不会被停止MessageBox.有什么建议?

.net c# messagebox winforms

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

防止代码仅在visual studio designer中运行

我有一个自定义控件,我在控件的Load事件中进行了一些位置检查.此位置检查根据其父控件中的设置将控件移动到屏幕上的特定位置.编译和运行应用程序时,此代码按预期工作.

但是,在使用Visual Studio设计器时,它会导致我的控件被绘制在可视区域之外,我无法使用设计器.是否有一个标志或属性,我可以设置为停止在Visual Studio设计器中运行该代码片段?

我现在唯一的工作就是注释掉代码,编译,启动设计器,进行更改,然后取消注释代码并重新编译.

visual-studio-2010 winforms

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

SerialPort.Read(byte [],int32,int32)没有阻塞但我想要它 - 我该如何实现?

我正在编写一个与一台测试设备交谈的界面.设备通过串行端口进行通信,并以发送的每个命令以已知的字节数进行响应.

我目前的结构是:

  • 发送命令
  • 读回指定字节数
  • 继续申请

但是,当我使用SerialPort.Read(byte [],int32,int32)时,该函数没有阻塞.因此,例如,如果我调用MySerialPort.Read(byteBuffer, 0, bytesExpected);,则函数返回的值小于指定的数量bytesExpected.这是我的代码:

public bool ReadData(byte[] responseBytes, int bytesExpected, int timeOut)
{
    MySerialPort.ReadTimeout = timeOut;
    int bytesRead = MySerialPort.Read(responseBytes, 0, bytesExpected);
    return bytesRead == bytesExpected;
}
Run Code Online (Sandbox Code Playgroud)

我将此方法称为:

byte[] responseBytes = new byte[13];
if (Connection.ReadData(responseBytes, 13, 5000))
    ProduceError();
Run Code Online (Sandbox Code Playgroud)

我的问题是,我似乎无法像我所说的那样读取完整的13个字节.如果我Thread.Sleep(1000)在我的SerialPort.Read(...)一切正常之前放好了.

Read在超出timeOut或读取指定的字节数之前,如何强制方法阻塞?

c# serial-port blocking

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

是否可以隐藏PropertyGrid中的枚举值?

我正在使用PropertyGrid控件并使用SelectedObject属性来显示数据PropertyGrid.我的网格中的一些属性是枚举类型.我希望能够做的是隐藏用户枚举中的一些选择.以下面的示例:我想隐藏用户的"错误"枚举.有没有办法做到这一点?

[TypeConverter(typeof(PropertySorter))]
public class Settings
{
    public enum FooType { Type1, Type2, Type3, Type4, Error };
    private FooType fakeProperty = FooType.Type1;

    public FooType FakeProperty
    {
        get { return fakeProperty; }
        set { // Do Something }
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在PropertyGrid通过调用显示数据:

myPropertyGrid.SelectedObject = mySettings;
Run Code Online (Sandbox Code Playgroud)

.net c# propertygrid enums winforms

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

通过switch语句(有时工作?)

我有一个switch语句,如下所示:

switch (condition)
{
    case 0:
    case 1:
        // Do Something
        break;
    case 2:
        // Do Something
    case 3:
        // Do Something
        break;
}
Run Code Online (Sandbox Code Playgroud)

我收到编译错误告诉我 Control cannot fall through from one case label ('case 2:') to another

嗯......是的,你可以.因为你是从做它case 0:通过对case 1:.

事实上,如果我删除了我case 2:和它的相关任务,代码就会编译并从中case 0:进入case1:.

那么这里发生了什么,我怎样才能让我的case语句通过并执行一些中间代码?

c# switch-statement fall-through

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

这些事件回调会发生在什么线程上?

new System.Threading.Thread(() =>
    {
        var myObject = new CustomObject();
        myObject.SomeEvent += SomeMethod;
    }).Start();
Run Code Online (Sandbox Code Playgroud)

第1部分:假设我在winforms应用程序中的主UI线程上运行上面的代码.哪个ThreadSomeMethod发生呼叫?它们是否会在Thread我创建对象时创建的相同?

第2部分:使用Visual Studio 2010,我如何自己解决这个问题?我不知道你在哪里发现了什么Thread东西在运行.

c# multithreading visual-studio-2010

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

将C指针语句转换为它们的C#等价物

我有一些C代码,我试图转换成C#代码,我正在运行我不熟悉的指针,所以我不知道C#等价.我得到一些帮助吗?

案例1:在C中给出这三行,如何在C#中声明p?

double snorm[169];
double *p = snorm;
*p = 1.0;
Run Code Online (Sandbox Code Playgroud)

案例2:我不知道指针实际上是做什么的,所以我不知道如何将这一行改为C#.

*(snorm+n) = *(snorm+n-1) * (double)(2*n-1) / (double)n;
Run Code Online (Sandbox Code Playgroud)

c c#

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

为什么这个byte []不等于我的另一个字节[]具有相同的值?

public static readonly byte[] TestArray=
    new byte[] { 0x75, 0xa5, 0x15, 0x19, 0xa0, 0x2e, 0xd9, 0x37, 0xb0, 0x4d };

public bool TestFunction() 
{
    MemoryStream s=new MemoryStream(
        new byte[] { 0x75, 0xa5, 0x15, 0x19, 0xa0, 0x2e, 0xd9, 0x37, 0xb0, 0x4d }
        );

    byte[] test=s.ToArray();
    return (test==TestArray);
}
Run Code Online (Sandbox Code Playgroud)

我正在使用上面的简单代码.数组中的字节值相等.但我TestFunction()总是回归虚假.到底是怎么回事?

c# arrays compare bytearray

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

在 Excel 的值范围中查找最接近 0 的值(包含非数字字段)

我在 Excel 中有一系列包含各种正数和负数的单元格。单元格的值由 IF 公式确定,区域中的某些单元格没有值 ("")。

我需要找到最接近 0 的单元格的绝对值。因此,如果我有一个包含 -10、-5、-1、3、6 和“”的列表:我需要得到结果 1。

我尝试了多种方法,但事实上我有非数字单元格似乎是导致错误的问题。

我尝试过的:

{=Min(ABS(A1:D10))},我按 Ctrl-Shift-Enter(由于非数字而返回错误)

{=IF(MAX(D3:D22)<=0,-1,IF(MIN(ABS(D3:D22))=MIN(ABS(IF(D3:D22>0,D3:D22,MAX(D3:D22)))),1,-1))*MIN(ABS(D3:D22))},我按 Ctrl-Shift-Enter(由于非数字而返回错误)

{=IF(OR((D3:D22)>0),MIN(ABS(D3:D22)),-MIN(ABS(D3:D22)))},我按 Ctrl-Shift-Enter(由于非数字而返回错误)

excel min absolute-value

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

为什么要用@分配字符串?

可能重复:
C#中字符串前面的@是什么?

这是我长期以来质疑的事情,但从来没有费心去弄清楚.当我下载第三方库时,我经常在字符串@之前使用符号看到字符串赋值.

string myString = @"Some text";
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做,似乎绝对没有区别

string myString = "Some text";
Run Code Online (Sandbox Code Playgroud)

那是@做什么的?

c#

0
推荐指数
1
解决办法
151
查看次数

获取包含该字段的对象数组中的字段数组

我有一个像这样的对象:

public class SavedFileInfo
{
    public String Address;
    public Int32 DataPort;
    public Int32 AudioPort;
    public String Description;
    public String Filename;
}
Run Code Online (Sandbox Code Playgroud)

我有一个这样的对象数组...... SavedFileInfo[] mySFI;

我现在如何string[] filenames从我的SavedFileInfo对象集合中获取Filename字段的数组(例如)?

.net c# arrays field object

0
推荐指数
1
解决办法
61
查看次数