急问: 委托事件编译错误,提示无法隐式类型转换一个简单的数据库访问类,
希望通过委托机制实现将底层的数据库访问对象的事件抛出在编译时提示无法进行隐式类型转换
(详见代码)请各位大虾帮忙看看
namespace my_DBQuery
{
using System;
using System.Data;
public delegate void StateChangeEventHandler(Object sender, System.Data.StateChangeEventArgs e);
public class DBquery
{
//数据库连接对象
private System.Data.SqlClient.SqlConnection DBConn; //希望引发的用户定义事件定义
public event StateChangeEventHandler ConnStateChanged;
//引发用户事件
private void ConnStateEvent(object sender, System.Data.StateChangeEventArgs e)
{
if (ConnStateChanged != null)
{
ConnStateChanged(this, e);
}
} //连接数据库
private void Connect()
{
string ConnString = ConnString = "Integrated Security=;" +
"Data Source = 127.0.0.1;database = test;Uid =sa;pwd =1234";
try
{
Disconnect();
DBConn = null;
DBConn = new System.Data.SqlClient.SqlConnection(ConnString);
DBConn.StateChange += new StateChangeEventHandler(ConnStateEvent);
//---------------------------------------此处系统提示编译错误
//错误提示为:无法将my_DBQuery.StateChangeEventHandler
// 隐式转换为System.Data.StateChangeEventHandler
//为什么????????
DBConn.Open(); }
catch (System.Data.SqlClient.SqlException sqlEx) { }
catch (Exception e) { }
}
//断开数据库连接
public void Disconnect()
{
if (DBConn.State > 0)
DBConn.Close();
DBConn.StateChange -= new StateChangeEventHandler(ConnStateEvent);
//--------------------同样的错误提示
DBConn = null;
}
}}
希望通过委托机制实现将底层的数据库访问对象的事件抛出在编译时提示无法进行隐式类型转换
(详见代码)请各位大虾帮忙看看
namespace my_DBQuery
{
using System;
using System.Data;
public delegate void StateChangeEventHandler(Object sender, System.Data.StateChangeEventArgs e);
public class DBquery
{
//数据库连接对象
private System.Data.SqlClient.SqlConnection DBConn; //希望引发的用户定义事件定义
public event StateChangeEventHandler ConnStateChanged;
//引发用户事件
private void ConnStateEvent(object sender, System.Data.StateChangeEventArgs e)
{
if (ConnStateChanged != null)
{
ConnStateChanged(this, e);
}
} //连接数据库
private void Connect()
{
string ConnString = ConnString = "Integrated Security=;" +
"Data Source = 127.0.0.1;database = test;Uid =sa;pwd =1234";
try
{
Disconnect();
DBConn = null;
DBConn = new System.Data.SqlClient.SqlConnection(ConnString);
DBConn.StateChange += new StateChangeEventHandler(ConnStateEvent);
//---------------------------------------此处系统提示编译错误
//错误提示为:无法将my_DBQuery.StateChangeEventHandler
// 隐式转换为System.Data.StateChangeEventHandler
//为什么????????
DBConn.Open(); }
catch (System.Data.SqlClient.SqlException sqlEx) { }
catch (Exception e) { }
}
//断开数据库连接
public void Disconnect()
{
if (DBConn.State > 0)
DBConn.Close();
DBConn.StateChange -= new StateChangeEventHandler(ConnStateEvent);
//--------------------同样的错误提示
DBConn = null;
}
}}
解决方案 »
- 这段JS奇怪
- FileUpload控件能上传视频吗
- C# 判断一个控件距显示器底部的距离
- Thread多線程多任務Copy大文件
- 实现3个窗体之间的打开,关闭
- 求救:我原来有VS2003做的项目,可以编绎,没有错误,可换用VS2005打开编绎,就出现这样的错误,而且编绎不成功呀!这是乍的啦?
- 在c#下怎样将一个xml文件转换成一个excel文件??
- 多谢sanmao0126,请来接分~(他人免进)
- 各位大哥:谁有用C sharp做的关于vb的语法分析或SQL语句的分析?发一个过来好么?
- 我用VC#做了一个小软件,怎样让它在没有安装vs.NET的机器上运行呢?
- Winform中DataGrid中如何控制单元格的Enter事件
- 关于.Net 程序的内存占用问题
你也using System.Data;
所以系统认为StateChangeEventHandler是System.Data.StateChangeEventHandler,
与my_DBQuery.StateChangeEventHandler混淆了
DBConn.StateChange += new StateChangeEventHandler(ConnStateEvent);with
DBConn.StateChange += new System.Data.StateChangeEventHandler(ConnStateEvent);
即可