オブジェクト ID を比較する必要があるため、Form1 の各テキスト ボックスを通過し、それらのタグを取得するループがあります。オブジェクトがテキスト ボックスの 1 つに既に存在する状況では、ユーザーがこのオブジェクトを再度追加することを許可したくありませんが、このオブジェクトがテキスト ボックスのいずれにも存在しない場合にのみ、ユーザーはこのアイテムを追加できます。
以下のこのループで試してみましたが、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」と表示され続けるため、うまくいかないようです。この行に if (resval.types.xan_ID == tbItems.types.xan_ID) 必要なメッセージ ボックスが表示された後、このコードを変更してこの目標を達成するにはどうすればよいですか。
// Get the name which will be passed into the textbox
var resval = form2result.getValue();
//go through each of my textbox
foreach (TextBox tb in TextBoxList)
{
var tbItems = (ReportItems)tb.Tag;
if (tb.Text != "")
{
//if the item returned is the same as an item in the textbox
if (resval.types.xan_ID == tbItems.types.xan_ID)
{
// display this message and break out of the loop
MessageBox.Show("You have previously selected this report, please chose another");
break;
}
// otherwise add the item into the textbox.
else
{
// otherwise add name to the textbox
_dict[sender].Text = resval.ToString();
}
}
}
レポート項目
public class ReportItems
{
public DataSet1.xspGetAnalysisTypesRow types { get; set; }
//Analysis types or Reports
public ReportItems(DataSet1.xspGetAnalysisTypesRow analysisTypes)
{
types = analysisTypes;
}
//Return the name of this type.
public override string ToString()
{
return this.types.xan_Name;
}
}
getValueFunction (これは別の形式です)
public ReportItems getValue()
{
ReportItems selection = (ReportItems)reportListBx.SelectedItem;
// if user has selected a value
return selection;
}