我正在将用VB6编写的旧程序转换为C#WPF,而且这段代码我很难尝试转换。
在我们的旧VB6项目中。代码编写如下:
Select Case paymentType
Case "CASH":
Set dlgpayment = New dlgPaymentCash
dlgPaymentCash.lblChange = format(-gvAmountDue - gvAddOnAmount, "0.00") '/NJ-2011/10/25 Added gvAddOnAmount
Case "CARD":
If PaymentTypeSupports(gvPaymentType, "multiple") And PaymentTypeSupports(gvPaymentType, "remember") And TypeName(dlgpayment) = "dlgPaymentCreditCard" Then
Else
Set dlgpayment = New dlgPaymentCreditCard
End If
dlgPayment
声明为:
Window dlgPayment = new Window();
所以每当我想继承其他窗口时,我只会这样编码:
Set dlgPayment = new dlgPaymentCash //dlgPaymentCash is a form.
每当我这样做时,我就可以像dlgPaymentCreditCard
这样的dlgPaymentCash.lblChange
格式访问控件,但它在C#中不起作用。
答案 0 :(得分:1)
这大致是转换:
switch (paymentType) {
case "CASH":
var dlgpayment = new dlgPaymentCash();
dlgPaymentCash.lblChange = string.Format("{0:0.00}", -gvAmountDue - gvAddOnAmount);
//NJ-2011/10/25 Added gvAddOnAmount
break;
case "CARD":
if (PaymentTypeSupports(gvPaymentType, "multiple")
&& PaymentTypeSupports(gvPaymentType, "remember")
&& typeof(dlgpayment) == "dlgPaymentCreditCard") {
//.....
} else {
var dlgpayment = new dlgPaymentCreditCard();
}
break;
}
如果format()
函数是标准的VB6函数,您可以使用string.Format()
函数,也可以只使用.ToString()
函数。
答案 1 :(得分:0)
您可以通过像这样调用WindowName.VariableName来访问Window中的变量:
switch(paymentType)
{
case "CASH":
Window dlgPayment = new Window();
//Access variable lblChange in dlgPayment
dlgPayment.lblChange="something";
break;
case "CARD":
break;
default:
break;
}
答案 2 :(得分:0)
假设您创建了一个继承Window类(代表表单)的类:
xaml.cs中的
public partial class PaymentDialog : Window //inherit Window
{
public string lblChange {get;set;} //this should be a textblock/label in xaml, but i just assume it is a string.
}
您需要通过以下方式创建PaymentDialog实例:
PaymentDialog dlgPayment = new PaymentDialog(); //notice the different
dlgPayment.lblChange = "XXX"; //you now can access it
Window dlgPaymentWindow = new Window();
dlgPaymentWindow.lblChange = "XXX";//you cannot access it since
//lblChange is not exist in WPF Window class