繁体   English   中英

如何在C#WPF中继承其他形式的控件?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM