2017-02-17 54 views
0

打开不同的表单如何将此代码写入一个函数? 我需要这几点,我认为这是不好的一直写 - 改变的原因... 唯一的区别是Formname。结合使用参数

if (language == "english") 
{ 
    FormEng eng = new FormEng(); 
    eng.DeliveryId = iDelId; 
    eng.CustomerId = iCustomerId; 
    eng.Year = iYear; 
    eng.Show(); 
} 
else if (language == "german") 
{ 
    FormGer ger = new FormGer(); 
    ger.DeliveryId = iDelId; 
    ger.CustomerId = iCustomerId; 
    ger.Year = iYear; 
    ger.Show(); 
} 
+0

如果你想找出定位是如何工作的,https://msdn.microsoft.com/en-us/library/ y99d1cd3(v = vs.71).aspx – Will

回答

0

定义基类FormAny与普通成员DeliveryIdCustomerId。然后定义派生类FormEng : FormAnyFormGer : FormAny。以上可修改为:

FormAny f = null; 
switch (language) 
{ 
    case "english": f = new FormEng(); break; 
    case "german": f = new FormGer(); break; 
} 
f.DeliveryId = iDelId; 
f.CustomerId = iCustomerId; 
f.Year = iYear; 
f.Show(); 
0

您可以制作一个表单实现/派生自的窗体。事情是这样的:

public abstract class ParentForm : Form 
{ 
    public int DeliveryId { get; set; } 
    public int CustomerId { get; set; } 
    public int Year { get; set; } 
} 

public class FormEng : ParentForm 
{ 
} 

public class FormGer : ParentForm 
{ 
} 

然后使用它,你可以这样做:

ParentForm form; 
if (language == "english") 
    form = new FormEng(); 
else 
    form = new FormGer(); 

form.DeliveryId = iDelId; 
form.CustomerId = iCustomerId; 
form.Year = iYear; 
form.Show(); 
1

这是不是让多语言的应用正确的方法。你应该真的使用语言资源。这是一个很长的文章,这将引导您完成所有的过程:

https://www.codeproject.com/Tips/580043/How-to-make-a-multi-language-application-in-Csharp

+0

这不是一个多语言应用程序。这只是为用户选择正确的报告(报告查看器在表单上)。 – Jocelyn

+0

基本上,FormEng和FormGer与不同语言的表单是相同的? – NicoRiff

+0

其实我有两种形式。不同的名称与英文.rdlc一个,德文版一个。但是如果可以在一个表单上选择不同的.rdlc,我可以使用一种形式 – Jocelyn