注册 登录
编程论坛 ASP.NET技术论坛

[求助]如何解决函数未定义

beblue 发布于 2007-03-25 05:26, 3999 次点击
<input type="reset" runat="server" id="reset" value="下一个" onclick="WriteInfo" /> <br />
<input onclick="WriteInfo" type="button" value="重置"/>
为啥老说我这两句 WriteInfo,,未定义呢,可是<asp:Button runat="server" ID="lnksubmi" Text="提交" OnClick="WriteInfo" /><br /><br />这一句都OK啊,,我当然有定义了WriteInfo,,,另外哪个帅哥告诉在下ASP.NET中的重置按钮要怎么写,谢谢,,,在线等啊,,

[此贴子已经被作者于2007-3-25 5:37:31编辑过]

70 回复
#52
beblue2007-03-26 22:39
这不是函数名的意思吗,,
void putout(object serder, EventArgs e)
{ if (i == 5)
{
labContent1.Text = strtemp[i];
}
else
{ labContent1.Text = "请输入五个后再提交,否则重启程序"; }
这不只是定义吗?
#53
pacocai2007-03-26 23:04

你这里已经是在调用控件动作了。

函数的定义是这样。

static void hello() //定义函数
{
Console.WriteLine("hello World!"); //定义函数功能
}

static void main(string[] args) //程序开始
{
hello(); //调用函数
Console ReadLine(); //打印到屏幕
}
这样得到的结果:hello World!

在这里Statict和void都是关键字,而hello是函数名()代表参数列表,这里是没有返回。大括号表示功能代码。上面是说函数我们再来看下面的代码。
//事实上这里也是函数,这里是一个事件动作函数。
void button_Click(object serder, EventArgs e) //响应按键事件
{
Edit1.Text="hello World"; // 替换标签字符串
}

执行结果:hello World!

在这里解释一下,void是关键字,button_Click这个是一个对象,object是对象类型。下面来解释一下。
在这里EventArgs告诉主程序,由于object的对象类型导至发生了事情e。函数是不需要调用对象的。这样应该解释得比较清楚了。

好了,现在回过头我们再分析一下你的程序。

//调用事件函数
void putout(object serder, EventArgs e) //putout事件前生的时候就执行事件E。
{ if (i == 5)
{
labContent1.Text = strtemp[i];
}
else
{ labContent1.Text = "请输入五个后再提交,否则重启程序"; }
}
在这里你的putout是一个动作,不能理解为函数,当然…………他是函数,不过如果真理解成函数容易混乱。

#54
beblue2007-03-26 23:14
void button_Click(object serder, EventArgs e) //响应按键事件
void putout(object serder, EventArgs e)
EventArgs告诉主程序,由于object的对象类型导至发生了事情e
这里我没看清楚

这两个的括号内的参数不是一样的吗,,,
还有 e 是什么意思呢
#55
beblue2007-03-26 23:15
void putout(object serder, EventArgs e) //putout事件前生的时候就执行事件E。
这个呢??
#56
pacocai2007-03-26 23:17
使用这个函数中,只要putout被调用,就会执行这个事件。所以现在首要弄清楚的是你的putout是什么东西??
#57
beblue2007-03-26 23:22

有点乱了,我们回头来论坛下,
你等我整理下

#58
beblue2007-03-26 23:25

代码如下:

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<html>
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="Form_Post" runat="server">
<h4><asp:Label id="Write_Number" runat="Server"/></h4>
姓名:<asp:TextBox id="Write_Name" runat="server"/>
<br/>
地址:<asp:TextBox id="Write_ADD" runat="server"/>
<asp:Button id="Write_Button" Text="提交" OnClick="Write_Button_Post" runat="server"/>
<br><br>
<h4>您所提交的信息如下</h4>
<asp:Label id="Write_Label" runat="Server"/>
</form>
</body>
</html>

Default.aspx.cs

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{
public static string[] i={"",""};
public static int j=0;
public static string r="";
protected void Page_Load(object sender, EventArgs e)
{
if (j<2)
{
Write_Number.Text="您好,你必需提交2个人的数据,你目前已经提交了"+Convert.ToString(j)+"人";
}
else
{
Write_Number.Text="您好,你已经提交了2个人的数据,提交完成!";
}
}
protected void Write_Button_Post(object sender, EventArgs e)
{
if (j<2)
{
i[j]="姓名:"+Write_Name.Text+"<br/>"+Write_ADD.Text;
r+=i[j]+"<br/><br/>";
j++;
}
else
{
Write_Label.Text=r;
j=0;
r="";
for (int t=2;t<2 ;t++)
{
i[t]="";
}
}
}
}


现在看你这个贴子,
protected void Page_Load(object sender, EventArgs e)
{
if (j<2)
{
Write_Number.Text="您好,你必需提交2个人的数据,你目前已经提交了"+Convert.ToString(j)+"人";
}
else
{
Write_Number.Text="您好,你已经提交了2个人的数据,提交完成!";
}
}

这个事件都没有被调用过,怎么运行时还是自己执行了呢

#59
pacocai2007-03-26 23:51
已经被调用了。Page_Load,这个是指向页面载入的时候
#60
beblue2007-03-26 23:54
怎么知道他是指向页面载入的时候呢,难道跟取名有关系??
#61
pacocai2007-03-27 00:07

所以你刚才的那句也是一样,如果你有那个putout没有在页面定义控件的话,那么在页面载入的时候就会自动被调用。而且是你每次页面被载入的时候就会被调。

#62
beblue2007-03-27 00:15
你是说如果我在页中如果没有控件来onclick事件的话,这个事件就会自动加载,而且是每次刷新时,是这个意思吗??
#63
pacocai2007-03-27 00:25

不是,是你没有相对应的响应事件,会被默认为页面载入事件,不过具体的说实话我没试过。不过一般来说我们写东西对事件都会写得很清楚,像页面载入事件会用Page_Load来命名,这样在以后程序的维护和修改都会比较方便。所以才会将程序页面分为两个部分一个是页面部份,一个是后台部份。要不以后的修改相当的困难。

#64
beblue2007-03-27 00:31
不是,是你没有相对应的响应事件,会被默认为页面载入事件,不过具体的说实话我没试过



是事件没有相对应的响应控件吧



#65
beblue2007-03-27 00:35

呵,跟你学能学习到很多专业知识哦,,可惜你都没经常用QQ
有MSN吗?

#66
pacocai2007-03-27 00:40
回复:(beblue)不是,是你没有相对应的响应事件,会...

呵呵,打错字了…………

PS:我也还在学习当中,C#我也刚学没多久。现在还在被报表和几个表格输出在头大。呵呵!一起学习吧,我平时不上QQ和MSN的,因为我很少聊天。

#67
beblue2007-03-27 00:43

我最开始学C,C++也详细学了下,C#老师都带过了,,没具体学,,都谈不上精,汗
对网络比较有兴趣,,ASP.NET网络语言当然要学啦,呵,ASP.NET就是酷,
呵呵,不聊天专注写程序啊??,,
都是自学的吗

#68
pacocai2007-03-27 00:55
也不是了,平时上班的时候不允许聊天,回到家里基本上不是看书就是上网乱逛,没什么聊天的兴趣。现在的东东基本上都是自学,学校里学的东西主要还是以打基础为主了。先学吧,学好这个再转C#的面向对象的编程会简单很多的了。
#69
pacocai2007-03-27 00:57
说实话,C我没学好……只是知道一个大概的东西,以前在学校主要还是主学PASCAL和ASP,现在在单位开发也是用DELPHI+ASP,但是ASP维护的时候太痛苦了,所以现在正在学,准备把以前的全换面C#,这样维护没这么累。
#70
beblue2007-03-27 00:57
呵,不早了,学计算机的人都习惯熬夜,明天还有课我先上床了,,

早睡早起,晚安
#71
pacocai2007-03-27 00:59
晚安,晚一点做完这点我也睡觉去了。身体一天比一天差。
12