C# 窗体程序自定义类 调用form中的方法

何必丿怀恋 2015-11-12 11:26:36
我在窗体中弄了一个文本框 新建一个类做一些操作 我想把这些操作的过程输出到这个文件框中即调用下面这个在From中的方法:
public partial class Form1 : Form
{

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

}
public void ShowInfo(string Info)
{
textBox1.AppendText(Info);
textBox1.AppendText(Environment.NewLine);
textBox1.ScrollToCaret();
}


}

自定义的cs类调用form中的ShowInfo()
不能使用new

...全文
1388 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 2015-11-12
  • 打赏
  • 举报
回复
把问题发去C#专区啊亲,这是C/C++区
caojinrong 2015-11-12
  • 打赏
  • 举报
回复
把Form传给你的类就行了 class XXX{ private Form1 form1; public XXX(Form1 form1){this.form1 = form1;} ...... form1.ShowInfo("xxxx"); ...... }
crystal_lz 2015-11-12
  • 打赏
  • 举报
回复

public class Test{//你的自定义类
    public delegate void XXXEventHandler(object obj,XXXEventArgs e);
    public event XXXEventHandler XXX;//XXX是事件名字
    protected virtual void OnXXX(XXXEventArgs e){
        if (this.XXX != null) this.XXX(e);
    }
    
    //在你需要输出日志的地方
    this.OnXXX(new XXXEventArgs("your log"));
    
    public class XXXEventArgs : EventArgs{
        private string _Text;
        public string Text{
            get{ return _Text; }
        }
        
        public XXXEventArgs(string strText){
            this._Text = strText;
        }
    }
}
//====调用
Test t = new Test();
t.XXX += new XXXEventHandler(test_XXX);

private void test_XXX(object obj,XXXEventArgs e){
    //这里事件会被触发自己YY吧
}
不是让你的类去调用窗体 而是应该在你类里面提供一个事件 让别的东西来绑定
何必丿怀恋 2015-11-12
  • 打赏
  • 举报
回复
引用 4 楼 crystal_lz 的回复:
不知道你要做什么程序 具体需求是什么 不过 我到时经常直接弹出一个 控制台窗口 显示日志

[DllImport("kernel32.dll")]
public static extern IntPtr AllocConsole();

然后调用 AllocConsole() 就可以弹出控制台窗口了 
然后程序里面 直接用 
Console.Wr....就可以了
我是这样的话我直接输出就可以了 我是想在窗体控件上面输出
何必丿怀恋 2015-11-12
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
没有看到你的自定义类 也没看到对 Form1.ShowInfo 的调用
我是不知道怎么调用 不知道写才问的 求实现代码
fancky2010 2015-11-12
  • 打赏
  • 举报
回复
static Form1 Instance;这个思路能满足吗
正怒月神 2015-11-12
  • 打赏
  • 举报
回复
一般是上层调用底层的。 窗体应该是最上层的,去调用底层的数据和方法。 楼主,你的思考方法存在问题。 应该在窗体中调用你底层类的方法 比如 form1中 string result=TestClass.Test(); 然后 将 result赋值给控件。 而不是说,底层类去调用上层类的方法。
xuzuning 2015-11-12
  • 打赏
  • 举报
回复
没有看到你的自定义类 也没看到对 Form1.ShowInfo 的调用
crystal_lz 2015-11-12
  • 打赏
  • 举报
回复
不知道你要做什么程序 具体需求是什么 不过 我到时经常直接弹出一个 控制台窗口 显示日志

[DllImport("kernel32.dll")]
public static extern IntPtr AllocConsole();

然后调用 AllocConsole() 就可以弹出控制台窗口了 
然后程序里面 直接用 
Console.Wr....就可以了
何必丿怀恋 2015-11-12
  • 打赏
  • 举报
回复
引用 2 楼 bdmh 的回复:
你最好不要在类里面控制UI组件,你可以通过自定义事件(委托)去让form绑定事件
怎么实现 求具体的代码 我的目的就是想在窗体上显示当前所进行的操作(类似日志窗口)
bdmh 2015-11-12
  • 打赏
  • 举报
回复
你最好不要在类里面控制UI组件,你可以通过自定义事件(委托)去让form绑定事件

111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧