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

问题描述 投票:0回答:3

我正在将用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#中不起作用。

c# wpf vb6-migration
3个回答
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()函数。


0
投票

您可以通过调用Window Name.Variable Name来访问Window中的变量,如下所示:

switch(paymentType)
{
    case "CASH":
                    Window dlgPayment = new Window();
                    //Access variable lblChange in dlgPayment
                    dlgPayment.lblChange="something";
                    break;
    case "CARD":
                    break;
    default:
                    break;
}

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
© www.soinside.com 2019 - 2024. All rights reserved.