问题描述
我在窗体中弄了一个文本框新建一个类做一些操作我想把这些操作的过程输出到这个文件框中即调用下面这个在From中的方法:publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidForm1_Load(objectsender,EventArgse){}publicvoidShowInfo(stringInfo){textBox1.AppendText(Info);textBox1.AppendText(Environment.NewLine);textBox1.ScrollToCaret();}}自定义的cs类调用form中的ShowInfo()不能使用new
解决方案
解决方案二:
把问题发去C#专区啊亲,这是C/C++区
解决方案三:
你最好不要在类里面控制UI组件,你可以通过自定义事件(委托)去让form绑定事件
解决方案四:
引用2楼bdmh的回复:
你最好不要在类里面控制UI组件,你可以通过自定义事件(委托)去让form绑定事件
怎么实现求具体的代码我的目的就是想在窗体上显示当前所进行的操作(类似日志窗口)
解决方案五:
不知道你要做什么程序具体需求是什么不过我到时经常直接弹出一个控制台窗口显示日志[DllImport("kernel32.dll")]publicstaticexternIntPtrAllocConsole();然后调用AllocConsole()就可以弹出控制台窗口了然后程序里面直接用Console.Wr....就可以了
解决方案六:
没有看到你的自定义类也没看到对Form1.ShowInfo的调用
解决方案七:
一般是上层调用底层的。窗体应该是最上层的,去调用底层的数据和方法。楼主,你的思考方法存在问题。应该在窗体中调用你底层类的方法比如form1中stringresult=TestClass.Test();然后将result赋值给控件。而不是说,底层类去调用上层类的方法。
解决方案八:
staticForm1Instance;这个思路能满足吗
解决方案九:
引用5楼xuzuning的回复:
没有看到你的自定义类也没看到对Form1.ShowInfo的调用
我是不知道怎么调用不知道写才问的求实现代码
解决方案十:
引用4楼crystal_lz的回复:
不知道你要做什么程序具体需求是什么不过我到时经常直接弹出一个控制台窗口显示日志[DllImport("kernel32.dll")]publicstaticexternIntPtrAllocConsole();然后调用AllocConsole()就可以弹出控制台窗口了然后程序里面直接用Console.Wr....就可以了
我是这样的话我直接输出就可以了我是想在窗体控件上面输出
解决方案十一:
publicclassTest{//你的自定义类publicdelegatevoidXXXEventHandler(objectobj,XXXEventArgse);publiceventXXXEventHandlerXXX;//XXX是事件名字protectedvirtualvoidOnXXX(XXXEventArgse){if(this.XXX!=null)this.XXX(e);}//在你需要输出日志的地方this.OnXXX(newXXXEventArgs("yourlog"));publicclassXXXEventArgs:EventArgs{privatestring_Text;publicstringText{get{return_Text;}}publicXXXEventArgs(stringstrText){this._Text=strText;}}}//====调用Testt=newTest();t.XXX+=newXXXEventHandler(test_XXX);privatevoidtest_XXX(objectobj,XXXEventArgse){//这里事件会被触发自己YY吧}
不是让你的类去调用窗体而是应该在你类里面提供一个事件让别的东西来绑定
解决方案十二:
把Form传给你的类就行了classXXX{privateForm1form1;publicXXX(Form1form1){this.form1=form1;}......form1.ShowInfo("xxxx");......}