2017-02-17 7 views
0

このコードを1つの関数に書くにはどうすればよいですか? 私はこれをいくつかの点で必要とし、私はいつもそれを書くのは良くないと思う - 変化の原因... 唯一の違いは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

DeliveryIdCustomerIdなどの一般的なメンバーと基底クラスFormAnyを定義します。次に、派生クラス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

実際に私には2つの形式があります。 Diffent nameは、英語の.rdlcとドイツ語の1つの形式です。しかし、1つのフォームで異なる.rdlcを選択できる場合は、1つのフォームを使用できます – Jocelyn

関連する問題