以下是截图:
源码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private delegate void d(int a, int b);
d dt;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int a = int.Parse(textBox1.Text);
int b =int.Parse(textBox2.Text);
Thread t = new Thread(()=>ThreadTest(a,b));
t.Start();
textBox1.Text = "a";
}
private void Result(int a,int b)
{
label1.Visible = true;
label1.Text = Convert.ToString(a, b);
}
private void ThreadTest(int a,int b)
{
if (label1.InvokeRequired)
{
while (!label1.IsHandleCreated)
{
if (label1.Disposing || label1.IsDisposed)
return;
}
dt = new d(Result);
label1.Invoke(dt, new object[] { a, b });
}
else label1.Text = Convert.ToString(a + b);
}
}
}
运行的时候
按了button后:
一直这样,有时还会在int a=Convert.ToInt32(textBox1.Text)报字符串转换为datetime应先分析什么什么的,我这里根本就没转为字符串格式。
求大神指点指点
贴出报错信息,按照你的图看,textBox1.Text如果是a的话,那么肯定不能转换为Int32
但是你的代码根本没有什么DateTime,怎么可能报那样的错。
你成功的让我打开vs了,一直不理解Convert.ToString(a, b),总觉得我知道得好少,各种找资料只看到概念性的东西,实验了一遍,大概得出的结论。
你逗我的吧!写错了吧,是a+b吧,跟else里要用的是同一个操作是吧,要算出两个数的和是吧。
吐槽完了再说说为什么出现a,经实验Convert.ToString(int32, int32)是返回以第一个数的第二个数的进制,一般不是2,8,10,16会报错,至于楼主为什么没有应该是自动转为最接近的16了,结果就是10的16进制、、、、、估计这后面的没人看了...好冷清的感觉