2

私の C# (3.5) ソリューションには、クラス ライブラリと WinForm プロジェクトの 2 つのプロジェクトがあります。

すべてのビジネス ロジックはクラス ライブラリにあります。WinForm からのデータの追加/更新中に、クラス ライブラリがエラーを検出すると、エラーが発生し、WinForm でコントロールを関連付けるためにフォーカスが設定されます。

出来ますか?

ありがとう、SKポール。

4

1 に答える 1

2

すべてのUIロジックはWinFormプロジェクトに残しておく必要があります。ほとんどの場合、悪い設計であるライブラリからフォーカスを設定するには、クラスライブラリに制御を渡す必要があります。その代わり:

namespace ClassLibrary
{
    public class Utility
    {
        public static string ReadData()
        {
            return "abc";
        }
    }
}

namespace Win_App
{
    public partial class Form1 : Form
    {
       private void button2_Click(object sender, EventArgs e)
       {
            if (ClassLibrary.Utility.ReadData() == null)
            {
                MessageBox.Show("error, redo");
                button2.Focus(); //you should handle this here.
                return;
            }
        }
    }
}

ここでの基本的な考え方は、エラーが発生した場合に適切な戻り値を通知することです。たとえば、オブジェクトの場合はnull値、bool値の場合はfalseです。UIプロジェクトで確認し、そこで処理する必要があります。したがって、あなたの場合、フォーカスを設定するのはWinFormプロジェクトからである必要があります。

于 2012-10-28T17:40:30.467 に答える