C# 尝试将DataGrid VeiwSource.View设置为null时出现错误消息
我正在尝试设置绑定的datagrid,以便不选择任何内容 加载页面并创建C# 尝试将DataGrid VeiwSource.View设置为null时出现错误消息,c#,wpf,datagrid,C#,Wpf,Datagrid,我正在尝试设置绑定的datagrid,以便不选择任何内容 加载页面并创建contactsListBySchoolIDViewSource时,我可以将其View设置为空。 加载页面后,如果单击按钮,datagrid中没有选择任何内容,则应用程序运行正常。 如果我在选择了datagrid中的单元格后单击按钮,try..catch不会捕获错误,但我会收到一个消息框,其中说明: “索引超出数组的边界。” 如果我在messagebox上单击“确定”,则在datagrid中不会选择任何我想要的内容 “con
contactsListBySchoolIDViewSource
时,我可以将其View
设置为空。
加载页面后,如果单击按钮,datagrid中没有选择任何内容,则应用程序运行正常。
如果我在选择了datagrid中的单元格后单击按钮,try..catch
不会捕获错误,但我会收到一个消息框,其中说明:
“索引超出数组的边界。”
如果我在messagebox上单击“确定”,则在datagrid中不会选择任何我想要的内容
“contactsViewSource”没有给我任何问题
我使用的是VS2012、WPF、C#和.NRT4.5
我的问题是如何阻止messagebox显示
<Page.Resources >
<!-- Bound to a "details view" -->
<CollectionViewSource x:Key="contactsViewSource" Source="{Binding Contacts, Source={StaticResource mTAdminDataSet}}"/>
<!-- Bound to a datagrid -->
<CollectionViewSource x:Key="contactsListBySchoolIDViewSource" Source="{Binding ContactsListBySchoolID, Source={StaticResource mTAdminDataSet}}"/>
</Page.Resources>
private void Page_Loaded(object sender, RoutedEventArgs e)
{
try
{
MTAdmin.MTAdminDataSetTableAdapters.ContactsListBySchoolIDTableAdapter mTAdminDataSetContactsListBySchoolIDTableAdapter = new MTAdmin.MTAdminDataSetTableAdapters.ContactsListBySchoolIDTableAdapter();
mTAdminDataSetContactsListBySchoolIDTableAdapter.Fill(mTAdminDataSet.ContactsListBySchoolID, schoolId);
contactsListBySchoolIDViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("contactsListBySchoolIDViewSource")));
contactsListBySchoolIDViewSource.View.MoveCurrentTo(null);
MTAdmin.MTAdminDataSetTableAdapters.ContactsListBySchoolIDTableAdapter mTAdminDataSetContactsListBySchoolIDTableAdapter = new MTAdmin.MTAdminDataSetTableAdapters.ContactsListBySchoolIDTableAdapter();
mTAdminDataSetContactsListBySchoolIDTableAdapter.Fill(mTAdminDataSet.ContactsListBySchoolID, schoolId);
contactsListBySchoolIDViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("contactsListBySchoolIDViewSource")));
contactsListBySchoolIDViewSource.View.MoveCurrentTo(null);
//other code.....
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void contactsButton_Click(object sender, RoutedEventArgs e)
{
try
{
//bound to grid with details(textboxes)
contactsViewSource.View.MoveCurrentTo(null);
//bound to the datagrid
// THIS IS THE LINE OF CODE THROWING THE ERROR
contactsListBySchoolIDViewSource.View.MoveCurrentTo(null);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
已加载私有无效页面(对象发送方,路由目标e)
{
尝试
{
MTAdmin.MTAdminDatasetAttableAdapters.ContactsListBySchoolTableAdapter MTAdminDatasetContactsListBySchoolTableAdapter=新建MTAdmin.MTAdminDatasetAttableAdapters.ContactsListBySchoolTableAdapter();
MTAdminDataSetContactsListBySchoolTableAdapter.Fill(mTAdminDataSet.ContactsListBySchoolID);
contactsListBySchoolIDViewSource=((System.Windows.Data.CollectionViewSource)(this.FindResource(“contactsListBySchoolIDViewSource”)));
contactsListBySchoolIDViewSource.View.MoveCurrentTo(空);
MTAdmin.MTAdminDatasetAttableAdapters.ContactsListBySchoolTableAdapter MTAdminDatasetContactsListBySchoolTableAdapter=新建MTAdmin.MTAdminDatasetAttableAdapters.ContactsListBySchoolTableAdapter();
MTAdminDataSetContactsListBySchoolTableAdapter.Fill(mTAdminDataSet.ContactsListBySchoolID);
contactsListBySchoolIDViewSource=((System.Windows.Data.CollectionViewSource)(this.FindResource(“contactsListBySchoolIDViewSource”)));
contactsListBySchoolIDViewSource.View.MoveCurrentTo(空);
//其他代码。。。。。
}
捕获(例外情况除外)
{
MessageBox.Show(例如Message);
}
}
私有无效联系人按钮点击(对象发送者,路由目标e)
{
尝试
{
//绑定到包含详细信息的网格(文本框)
contactsViewSource.View.MoveCurrentTo(空);
//绑定到数据网格
//这是引发错误的代码行
contactsListBySchoolIDViewSource.View.MoveCurrentTo(空);
}
捕获(例外情况除外)
{
Show(例如ToString());
}
}
谢谢 天哪,这到底是什么<代码>MTAdmin.MTAdminDatasetAttableAdapters.ContactsListBySchoolTableAdapter MTAdminDatasetContactsListBySchoolTableAdapter=新建MTAdmin.MTAdminDatasetAttableAdapters.ContactsListBySchoolTableAdapter()代码>-伙计,请使用
var
。这不是java。另外,CollectionViewSource
用于XAML,而不是过程代码。如果您得到:“索引在数组的边界之外。”那么您可能会尝试查看网格的行集合。请向我们显示引发错误的确切行。引发错误的代码行是:contactsListBySchoolViewSource.View.MoveCurrentTo(null)在按钮单击事件中使用代码>。MTAdmin.MTAdminDataSetAttableAdapters.ContactsListBySchoolIDTableAdapter mTAdminDataSetContactsListBySchoolIDTableAdapter
,因为var
不能在方法外部使用。代码可能不是最好的,但我正在学习。