我正在设计一个日志记录功能,用户可以在其中选择要记录的事件.点击按钮,我显示这种类型的菜单:
用户可以选择多个事件,因此当用户点击它时,我需要在所选选项的前面显示"复选标记".
我无法找到此问题中提到的"Checked"或"CheckOnClick"等选项.
我尝试使用ContextMenu和ContextMenuStrips但无法实现Checkboxes.有什么建议??
这不是编程怀疑!
我打算为某些应用程序编写DLL.我有两个选择可供选择:C++或C#我应该用哪种语言编写DLL?
这会影响功能吗?
我是一个完全新手并且不知道C++和C#(但是C#中的一些小程序).
在C++或C#中编写DLL的优点和缺点是什么?
非常感谢您的宝贵时间!
此致,Swanand!
我正在使用Visual Studio 2010并在C#(.NET 3.5)中编程。
我想从COM10写入/读取数据。
这是简单的代码:
static void Main(string[] args)
{
String Portname = String.Empty;
/* List out all COM ports present on the computer. */
foreach (string ports in SerialPort.GetPortNames())
{
Console.WriteLine(ports);
/* If COM10 exists, copy the name for further use. */
if (ports == "COM10")
{
Portname = ports; //I also tried this: "\\.\\COM10";
}
}
/* If COM10 not found, return */
if (Portname == String.Empty)
{
Console.WriteLine("Exiting");
return;
}
SerialPort Port = new …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个Windows窗体应用程序,以便在通过USB连接的设备上执行少量操作.对于所有操作,如读取,写入和其他操作,我们有一个自定义库.
用户点击按钮时完成写操作.
要读取,将创建一个单独的线程.可用库的问题是Read调用是阻塞的并且具有INFINITE Timeout.
如果连接失败,该线程会在Read函数调用时停止,因为只有在收到数据时此函数才会中断.
在这种情况下杀死这个线程的方法是什么?Thread.Abort()不起作用.
我正在使用C#进行编程.
我读过一些帖子说处理 RxSwift 的最佳实践是只将致命错误传递给 onError 并将结果传递给 onNext。
这对我来说很有意义,直到我意识到我无法再处理重试,因为它只发生在 onError 上。
我该如何处理这个问题?
另一个问题是,如何同时处理全局和本地重试混合?
例如,iOS 收据验证流程。
1、尝试在本地取收据
2、如果失败,请向苹果服务器索取最新的收据。
3,将收据发送到我们的后端进行验证。
4、如果成功,则整个流程完成
5、如果失败,检查错误代码是否可重试,然后返回1。
而在新的 1 中,它将强制要求从苹果服务器获取新收据。然后当它再次达到 5 时,整个流程将停止,因为这已经是第二次尝试了。意思是只重试一次。
因此,在这个例子中,如果使用状态机,并且不使用RX,我会最终使用状态机和共享一些全局状态一样isSecondAttempt: Bool
,shouldForceFetchReceipt: Bool
等等。
我如何在 rx 中设计这个流程?与这些在流程中设计的全局共享状态。
在我的应用程序中,我需要Zip和解压缩一些文件.为此,我使用了DotNet Zip Library(Ionic.Zip.dll-- DotNet Zip Lib)
一切正常但是当我拿出我的文件的EXE并尝试从不同的文件夹运行它时,它无法运行.我必须将Ionic.Zip.dll保存在我的应用程序所在的文件夹中.有什么出路吗?我只想要一个没有附加任何字符串的EXE文件....或者除了DotNet Zip Lib之外还有其他任何选项.
为了防止用户运行我的应用程序的多个实例,我使用此代码: -
Process[] pArry = Process.GetProcesses();
int nCount = 0;
foreach (Process p in pArry)
{
string ProcessName = p.ProcessName;
ProcessName = ProcessName.ToLower();
if (ProcessName.CompareTo("myApp") == 0)
{
nCount++;
}
}
if (nCount > 1)
{
MessageBox.Show(AppAlreadyRunning,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
Process.GetCurrentProcess().Kill();
}
Run Code Online (Sandbox Code Playgroud)
但正如我们所知,如果更改exe名称,进程名称会更改.因此,如果用户将"myApp.exe"更改为"UserApp.exe",则此修补程序将无效!有什么出路吗?
我在VS2010中使用C#.谢谢!
我编写了一个解释串行数据(CAN)的函数,当前返回一个浮点数.我希望函数包含一个参数,其中用户在字符串中指定返回类型,并且该函数返回该类型的值.这只是一个方便的事情,避免必须编写几乎共享所有相同代码的多个函数.
我已经从C转到C#.我有一个接受数组的函数.我想将二维数组的一维传递给此函数.
C代码将是: -
void array_processing(int * param);
void main()
{
int Client_ID[3][50];
/* Some
Processing
which fills
this array */
array_processing(&Client_ID[1]);
}
Run Code Online (Sandbox Code Playgroud)
现在,当我想在C#中做同样的事情时,我该如何传递这个数组呢?功能定义如下: -
private void array_processing(ref int[] param);
Run Code Online (Sandbox Code Playgroud)
和Array将声明为: -
int[,] Client_ID = new int[3,50];
Run Code Online (Sandbox Code Playgroud)
现在我怎样才能传递Client_ID[1]
给函数array_processing()
?
通过array_processing ( ref Client_ID[1])
喊叫"错误的指数"!
我有一个 GUI 应用程序,它有很多颜色,如绿色、红色、白色、棕色——所有这些都在黑色背景上。
我想为此应用程序添加一个屏幕截图按钮。我对其进行了编码(并且工作正常),但我必须向用户提供有关屏幕截图已拍摄的视觉指示(不是通过任何 MessageBox)。
我能想到的最好方法之一是暂时反转所有颜色并恢复正常(就像 Adobe Reader 中的快照一样)。
谁能帮我这个?
或者您认为可以确认屏幕截图的任何其他想法。
或者你能告诉我如何“重新绘制”整个窗口吗?
我需要一个线索来开始我的探索!:(
提前致谢!
更新:作为临时灵魂,即使在“捕获”按钮上,我也这样做了:-
this.BackColor = Color.White; // My Original BackColor is Black
Update();
Refresh();
Thread.Sleep(250); // I don't want responsive UI... It's like Still Picture frame. :)
this.BackColor = Color.Black; // Back to Normal
Update();
Refresh();
Run Code Online (Sandbox Code Playgroud) 我有一个文件,它有一个静态常量字符串和一个函数,它将返回指向该字符串的指针.文件看起来像这样:
typedef unsigned char BOOLEAN;
#define TRUE 1
#define FALSE 0
static const unsigned char MAL_Version[8] = "2.001";
/* Function to return Version string */
BOOLEAN GetVersion ( unsigned char* pu8Version )
{
BOOLEAN success = FALSE;
if(pu8Version != NULL)
{
pu8Version = &MAL_Version[0];
success = TRUE;
printf("\r\nTRUE");
printf("\r\n%s", pu8Version);
}
return success;
}
Run Code Online (Sandbox Code Playgroud)
在main()中,我声明一个数组并将其地址传递给GetVersion函数.当我这样做时,我会得到随机字符.
int main() {
unsigned char buffer[10];
GetVersion(buffer);
printf("\r\n%s", buffer);
}
Run Code Online (Sandbox Code Playgroud)
输出是:
真正
2.001
D3
我错过了什么?函数中的指针正确打印字符串,但是当它返回时,它会打印垃圾.
根据此问题,首先对预处理程序进行评估,然后对枚举进行处理。我检查了这是真的!
我有一个枚举 eTypes
typedef enum
{
eTYPE_1 = 0u,
eTYPE_2,
eTYPE_3,
eTYPE_MAX
} eTypes;
Run Code Online (Sandbox Code Playgroud)
然后我定义一个尺寸为
#define MAX_ARRAY_SIZE (2 * eTYPE_MAX)
并声明为 U8 TestArray[MAX_ARRAY_SIZE]
根据链接的问题,在处理时MAX_ARRAY_SIZE
,编译器不知道eTypes
。然后如何TestArray
获得正确的大小。我看到了6个字节的TestArray。