[英]How do I inherit controls in other form in C# WPF?
我正在将用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#中不起作用。
这大致是转换:
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()
函数。
您可以通过调用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;
}
假设您创建了一个继承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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.