私の C# (3.5) ソリューションには、クラス ライブラリと WinForm プロジェクトの 2 つのプロジェクトがあります。
すべてのビジネス ロジックはクラス ライブラリにあります。WinForm からのデータの追加/更新中に、クラス ライブラリがエラーを検出すると、エラーが発生し、WinForm でコントロールを関連付けるためにフォーカスが設定されます。
出来ますか?
ありがとう、SKポール。
私の C# (3.5) ソリューションには、クラス ライブラリと WinForm プロジェクトの 2 つのプロジェクトがあります。
すべてのビジネス ロジックはクラス ライブラリにあります。WinForm からのデータの追加/更新中に、クラス ライブラリがエラーを検出すると、エラーが発生し、WinForm でコントロールを関連付けるためにフォーカスが設定されます。
出来ますか?
ありがとう、SKポール。
すべての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プロジェクトからである必要があります。