我在VB.Net中做了一个日历,我决定给C#一个尝试。我很困惑如何将我的代码转换为C#,因为Do Loop。 这是我在VB中的当前源代码。什么是C#的Do循环等价?
Public Sub LoadCal(ByVal ldate As Date, ByVal Selected As Integer)
M = ldate.Month
Y = ldate.Year
D = ldate.Day
clearall()
MonthName.Text = monthstr(ldate.Month) & " " & ldate.Year
Dim fdate As DayOfWeek = GetFirstOfMonthDay(ldate)
Dim idate As Integer = 1
Dim row As Integer = 1
Do
getlabel(fdate, row).Text = idate
getlabel(fdate, row).ForeColor = Label18.ForeColor
'Current Date
If idate = Selected And idate = Date.Now.Day And ldate.Month = Date.Now.Month Then
getlabel(fdate, row).ForeColor = Color.Red
End If
If fdate = DayOfWeek.Saturday Then
row += 1
End If
fdate = tdate(fdate)
idate += 1
If su1.Text.Length = 0 Then
psu1.BorderStyle = BorderStyle.None
psu1.Enabled = False
Else
psu1.BorderStyle = BorderStyle.FixedSingle
psu1.Enabled = True
End If
If idate = Date.DaysInMonth(ldate.Year, ldate.Month) + 1 Then
Exit Do
End If
Loop
End Sub
这里就是我到C#,这似乎是正确的做出。 (我希望)
public void LoadCal(DateTime ldate, int Selected) {
M = ldate.Month;
Y = ldate.Year;
D = ldate.Day;
clearall();
MonthName.Text = (monthstr(ldate.Month) + (" " + ldate.Year));
DayOfWeek fdate = GetFirstOfMonthDay(ldate);
int idate = 1;
int row = 1;
) {
getlabel(fdate, row).Text = idate;
getlabel(fdate, row).ForeColor = Label18.ForeColor;
// Current Date
Now.Month;
getlabel(fdate, row).ForeColor = Color.Red;
fdate = DayOfWeek.Saturday;
row++;
if ((fdate == tdate(fdate))) {
idate++;
if ((su1.Text.Length == 0)) {
psu1.BorderStyle = BorderStyle.None;
psu1.Enabled = false;
}
else {
psu1.BorderStyle = BorderStyle.FixedSingle;
psu1.Enabled = true;
}
(DaysInMonth(ldate.Year, ldate.Month) + 1);
}
}
}
我很确定C#不接受VB的For循环,我不知道如何以另一种方式将它合并。我感谢帮助和抱歉。
哇哦,现在我觉得自己很蠢。我真的很感谢帮助。我还有一个问题,这有点相关。什么是C#的模块对应物?我似乎无法在任何地方找到它。 – SlicedBread
@SlicedBread,没有一个。静态类是最接近你在C#中的VB模块。 –
我明白了。看起来过渡并不容易。非常感谢,@KirillShlenskiy。 – SlicedBread