• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

大家帮忙看看这个应该怎么写,只有一句话!!!急等!!!

zhuzhusex1012 2012-03-06 10:02:38
有一个
public class ComMethod
{
public static void ClearAllTextBox(ref Form form)
{
foreach (Control control in form.Controls)
{
if (control.GetType().ToString().Contains("TextBox"))
{
((TextBox)control).Text = "";
}
}
}
}

我想在窗体中调用这个类中的方法,清空TextBox,
ComMethod.ClearAllTextBox(ref this); //this只读,,,

请问大家应该怎么写啊?
...全文
259 点赞 收藏 24
写回复
24 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
blueyady 2012-03-06
我也觉得是去掉ref
回复
cnwin 2012-03-06
楼主说说怎么不对了?是不是楼主准备些窗体的扩展方法啊?那你的扩展方法所在的类应该是静态类,方法为静态方法,并在前面加this

public static class ComMethod
{
public static void ClearAllTextBox(this Form form)
{
foreach (Control control in form.Controls)
{
if (control.GetType().ToString().Contains("TextBox"))
{
((TextBox)control).Text = "";
}
}
}
}

回复
zhuzhusex1012 2012-03-06
oK ,,,谢谢大家的回答,,,我自己搞错了!!!!!结贴
回复
fanfanrot 2012-03-06
你先确定下你的textbox空间是直接放在窗体里面的还是放在窗体子控件里面的。。。。
你这个方法只能情况窗体的子控件textbox
方法换个写法
public class ComMethod
{
public static void ClearAllTextBox(Control control)
{
//遍历子控件
foreach (Control child in control.Controls)
{
if (child is TextBox)
{
((TextBox)child).Text = "";
}
//如果子控件扔包含子控件则子调用删除
ClearAllTextBox(child);
}
}
}

调用的入参不变
ComMethod.ClearAllTextBox(this);

测试过的 可以用
回复
把所有的ref去掉
回复
东海凌波 2012-03-06
上面窗体代码发错了,更正:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace TEST
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
ComMethod.ClearAllTextBox(this );
}
}
}
回复
东海凌波 2012-03-06
类代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace TEST
{
public class ComMethod
{
public static void ClearAllTextBox( Form form)
{
foreach (Control control in form.Controls)
{
if (control.GetType().ToString().Contains("TextBox"))
{
((TextBox)control).Text = "";
}
}
}

}
}
窗体有3个TEXT,一个BUTTON,窗体代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace TEST
{
public class ComMethod
{
public static void ClearAllTextBox( Form form)
{
foreach (Control control in form.Controls)
{
if (control.GetType().ToString().Contains("TextBox"))
{
((TextBox)control).Text = "";
}
}
}

}
}
回复
Castiel丶Luo 2012-03-06
不可能还不对啊
回复
Castiel丶Luo 2012-03-06
public class ComMethod
{
public static void ClearAllTextBox(ref Form form)
{
foreach (Control control in form.Controls)
{
if (control.GetType().ToString().Contains("TextBox"))
{
((TextBox)control).Text = "";
}
}
}
}

ComMethod.ClearAllTextBox(this); //this只读,,,

回复
ck11926375 2012-03-06
public static void ClearAllTextBox(Form form)

ComMethod.ClearAllTextBox(this);

去掉ref。
不知道你怎么还没对。
回复
bobo66542401 2012-03-06
楼上说的不错
回复
全局变量 2012-03-06
[Quote=引用楼主 zhuzhusex1012 的回复:]
有一个
public class ComMethod
{
public static void ClearAllTextBox(ref Form form)
{
foreach (Control control in form.Controls)
{
if (control……
[/Quote]
你应该 在 show 的时候就吧 NEW 的窗体给这个方法
回复
jshi123 2012-03-06
去掉ref
回复
zhuzhusex1012 2012-03-06
上面的所有人都说的不对!!!!!!!!有没有人会啊??????????????
回复
全局变量 2012-03-06
[Quote=引用 1 楼 lihanbing 的回复:]
public static void ClearAllTextBox(Form form)

不需要ref
[/Quote]
++
回复
Castiel丶Luo 2012-03-06
[Quote=引用 5 楼 ziyouli 的回复:]
Form 本来就是引用类型的,没必要在加上ref了。
[/Quote]

++
去掉 ref 就可以执行
回复
zhuzhusex1012 2012-03-06
楼上2个人说的都不对。。。。。。。。。。。。。急等。。。。。。。。。。。。。。
回复
ziyouli 2012-03-06
Form 本来就是引用类型的,没必要在加上ref了。
回复
ziyouli 2012-03-06
去掉ref就可以了。
回复
zhuzhusex1012 2012-03-06
有没有人会啊???????????
回复
加载更多回复
相关推荐
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2012-03-06 10:02
社区公告

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