关于网友提出的“vb源代码 vb事件代码移植为C#代码”问题疑问,本网通过在网上对“vb源代码 vb事件代码移植为C#代码”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题:vb源代码 vb事件代码移植为C#代码描述:
为Canlendar控件添加事件,在网上找到一个VB代码的(http://itgroup.blueshop.com.tw/jeff377/blog?n=convew&i=2045),由于不会VB,请高手移植一下。代码如下:
///
/// 日期储存格引发的命令事件。
///
< _
System.ComponentModel.Category(WebCommon.Category.Action), _
System.ComponentModel.Description("日期储存格引发的命令事件。") _
> _
Public Event DayCommand(ByVal sender As Object, ByVal e As DayCommandEventArgs)
///
/// 引发 DayCommand 事件。
///
Protected Overridable Sub OnDayCommand(ByVal e As DayCommandEventArgs)
RaiseEvent DayCommand(Me, e)
End Sub
///
/// 引发 PostBack 产生的控制项事件。
///
Protected Overrides Sub RaisePostBackEvent(ByVal eventArgument As String)
Dim oArgument() As String
Dim oEventArgs As DayCommandEventArgs
If String.Compare(eventArgument, 0, "DayCommand", 0, "DayCommand".Length, StringComparison.Ordinal) = 0 Then
oArgument = Split(eventArgument, "$")
If oArgument.Length <> 3 Then Exit Sub
oEventArgs = New DayCommandEventArgs()
oEventArgs.CommandName = oArgument(1)
oEventArgs.Date = Date.Parse(oArgument(2))
OnDayCommand(oEventArgs)
Exit Sub
End If
MyBase.RaisePostBackEvent(eventArgument)
End Sub
///
/// 取得引发 DayCommand 事件的用户端指令码。
///
/// 命令名称。
/// 日期。
Public Function GetDayCommandEventReference(ByVal CommandName As String, ByVal [Date] As Date) As String
Dim sArgument As String
sArgument = String.Format("DayCommand${0}${1}", CommandName, [Date].ToShortDateString)
Return Me.Page.ClientScript.GetPostBackEventReference(Me, sArgument)
End Function
解决方案1:
///
/// 日期储存格引发的命令事件。
///
[
System.ComponentModel.Category("Action"),
System.ComponentModel.Description("日期储存格引发的命令事件。")
]
public event EventHandlerDayCommand;
///
/// 引发 DayCommand 事件。
///
protected virtual void OnDayCommand(DayCommandEventArgs e)
{
if (DayCommand != null)
DayCommand(this, e);
}
///
/// 引发 PostBack 产生的控制项事件。
///
protected override void RaisePostBackEvent(string eventArgument)
{
string[] oArgument;
DayCommandEventArgs oEventArgs;
if (string.Compare(eventArgument, 0, "DayCommand", 0, "DayCommand".Length, StringComparison.Ordinal) == 0)
{
oArgument = eventArgument.Split('$');
if (oArgument.Length != 3) return;
oEventArgs = new DayCommandEventArgs();
oEventArgs.CommandName = oArgument[1];
oEventArgs.Date = DateTime.Parse(oArgument[2]);
OnDayCommand(oEventArgs);
return;
}
base.RaisePostBackEvent(eventArgument);
}
///
/// 取得引发 DayCommand 事件的用户端指令码。
///
/// 命令名称。
/// 日期。
public string GetDayCommandEventReference(String commandName, DateTime date)
{
string sArgument;
sArgument = String.Format("DayCommand${0}${1}", commandName, date.ToShortDateString());
return this.Page.ClientScript.GetPostBackEventReference(this, sArgument);
}