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

时间:2018-03-01 02:14:29

标签: c# wpf vb6-migration

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

3 个答案:

答案 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