关键是在TCP客户端接收/发送数据包时使用备忘录通知用户.旧的代码是额外的愚蠢,我使用了一个用于在备忘录中添加文本的Timer,因为Timer可以访问表单成员,lol.
旧代码:
//Memo.Text += txt + "\n";
Run Code Online (Sandbox Code Playgroud)
我今天玩它,这就是我所做的
在Form1的类中
public string TextValue
{
get
{
return Memo.Text;
}
set
{
this.Memo.Text += value + "\n";
}
}
Run Code Online (Sandbox Code Playgroud)
我这样调用代码:
Form1 myForm = new Form1();
myForm.TextValue = "test asdasd";
Run Code Online (Sandbox Code Playgroud)
备忘录修饰符是私有的,但这不是问题.
问题是当我调用代码时,备忘录上没有显示文本.
如何获取特定方法的特定消息?
我见过一些例子,人们使用"ref",但我不明白.
例如,在delphi中,我的函数(方法)必须在Main Form类中声明,并且在我必须放置消息的声明旁边
type
TForm1 = class(TForm)
...
protected
procedure MessageHandler(var Msg:Tmessage);Message WM_WINSOCK_ASYNC_MSG;
end;
Run Code Online (Sandbox Code Playgroud)
我需要在C#中使用它,所以我可以在我的应用程序中使用WSAAsyncSelect
检查>我的其他问题<以赏金550的声望来理解我的意思
之前我曾经问过Bitwise AND(&)的反面,你告诉我它无法逆转.
嗯,情况就是这样:服务器发送一个图像,用我想要反转的函数编码,然后用zlib编码.
这是我从服务器获取图像的方式:
UInt32[] image = new UInt32[200 * 64];
int imgIndex = 0;
byte[] imgdata = new byte[compressed];
byte[] imgdataout = new byte[uncompressed];
Array.Copy(data, 17, imgdata, 0, compressed);
imgdataout = zlib.Decompress(imgdata);
for (int h = 0; h < height; h++)
{
for (int w = 0; w < width; w++)
{
imgIndex = (int)((height - 1 - h) * width + w);
image[imgIndex] = 0xFF000000;
if (((1 << (Int32)(0xFF & (w & 0x80000007))) & imgdataout[((h * width + …Run Code Online (Sandbox Code Playgroud) 是否可以在方法中声明可选参数?
例如,在delphi中,我可以执行以下操作:
procedure Test(p1:integer;p2:integer;p3:integer = 2;p4:integer = 4)
Run Code Online (Sandbox Code Playgroud)
当我调用该函数时,我可以用四个参数或两个参数调用它:
Test(2,3); //p3 = 2,p4 = 4.
Test(2,3,4,5); //p3 = 4,p4 = 5;
Run Code Online (Sandbox Code Playgroud)
这怎么可能在C#中?
如果我在标签的text属性中添加Tilde("〜"),则标签不显示它,而是显示上部波浪号.
如何在括号内写出正常的波形符号("〜")?
我需要的只是strcpy().
我想看看缓冲区(字节数组)的前三个字节是否为"JMX"字符串.
这是我到目前为止所做的:
char * ddj;
strcpy( ddj, buffer ); //buffer is BYTE[]
if ( strcmp( "JMX", ddj ) == 0 ) //check first three chars are "JMX"
{
buffer += 20; //increase the index with 20
size -= 20; //int
}
Run Code Online (Sandbox Code Playgroud)
我在strcmp()行遇到异常.问题是什么?
我希望我用C#写这个:(
几天前VS 2010进行了Beta测试,通常使用新的Visual Studio,我们获得了新的C#.
由于VS和.NET 4处于测试阶段,这是否意味着C#第四版即将完成?
编辑:VS 2010 beta中包含C#v4 Beta吗?
当我发现我的代码不能正常工作时我感到非常惊讶所以我创建了一个控制台应用程序来查看问题所在,当我看到下面的代码返回0时我更加惊讶
static void Main(string[] args)
{
float test = 140 / 1058;
Console.WriteLine(test);
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
我试图将结果输入%并将其放入我的应用程序的进度(意味着(140/1058)*100)栏中,第二个值(1058)实际上是我的应用程序中的ulong类型,但这不是好像是问题所在.
问题是 - 问题在哪里?
在我的C#项目中,我使用以下代码在自己的类之外访问我的表单.
public static FormMain singletonInstance { get; private set; }
public static void PFA(Action<FormMain> action) //PFA = PerForm Action
{
var form = FormMain.singletonInstance;
if (form != null)
{
form.PerformAction(action);
}
}
public void PerformAction(Action<FormMain> action)
{
if (InvokeRequired)
Invoke(action, this);
else
action(this);
}
Run Code Online (Sandbox Code Playgroud)
"FormMain"中的构造函数是:
public FormMain()
{
InitializeComponent();
singletonInstance = this;
}
Run Code Online (Sandbox Code Playgroud)
我不知道如何在Delphi中做到这一点.
问题(Delphi):当Im在其类之外时,我如何在表单上更改某些内容(例如Edit1.Text),Invoke?
提前致谢!
例如,可以创建一个类型标识符:
type PByte = ^Byte;
Run Code Online (Sandbox Code Playgroud)
是否可以执行以下操作:
function a:shortint;
begin
Exit(8);
end;
type b = a;
Run Code Online (Sandbox Code Playgroud)
所以你可以叫"b"和"a".可能吗?
我问,因为我想用"返回"替换"退出",所以我可以这样称呼:
return(5);// for example
Run Code Online (Sandbox Code Playgroud)