【发布时间】:2017-08-27 15:58:27
【问题描述】:
我在 tabControl 中有来自数据库和 DataGrid 的数据的组合框。
一切正常。 我在 tabItem_1 上的 comboBox_1 中选择了一些东西(DataGrid_1 从 DB 中显示表作为我对 ComboBox_1 的选择值)并切换到 tabItem_2 并在 comboBox_2 中选择一些东西(DataGrid_2 从 DB 中显示表作为我对 ComboBox_2 的选择值)
但是当我回到 TabItem_1 时,TabItem_1 出现错误:
对象引用未设置为对象实例
当我单击“确定”时,一切正常。 我该如何解决?
XAML 代码:
<TabItem Background="Bisque" ToolTip="W tym oknie możesz przeglądnąć historię wypożyczeń danej ksiązki, wybierz z ComboBoxa pozycje i przycisk kliknij wczytaj">
<TabItem.Header>
<StackPanel Orientation="Horizontal" >
<TextBlock Text="Historia książęk" FontSize="16" />
</StackPanel>
</TabItem.Header>
<StackPanel>
<ComboBox x:Name="cBox_hisBooks" HorizontalAlignment="Center" Margin="5" VerticalAlignment="Top" Width="300" ToolTip="Rozwiń liste i wybierz książkę, której historie wypożyczeń chcesz wyświetlić" IsEnabled="True" Loaded ="cBox_hisBooks_Loaded" SelectionChanged="cBox_hisBooks_SelectionChanged"/>
<!-- DisplayMemberPath="HISTORies"-->
<DataGrid x:Name="dg_hisBooks" AutoGenerateColumns="False" VerticalAlignment="Center" Height="400" ToolTip="Podgląd bazy danych z ewidencja czytelników wypożyczeń, aby odświeżyć naciśnij przycisk poniżej" Loaded="dg_hisBooks_Loaded" SelectionChanged="dg_hisBooks_SelectionChanged" Margin="10,5">
<DataGrid.Columns>
<DataGridTextColumn Header="ID czytelnika" Binding="{Binding USER.USERID}"/>
<DataGridTextColumn Header="Imię czytelnika" Binding="{Binding USER.FIRSTNAME}"/>
CS 代码:
private void cBox_hisBooks_Loaded(object sender, RoutedEventArgs e) // ok
{
try // próba połaczenia z baza Oracle
{
List<BOOK> books = new List<BOOK>();
using (EntitiesDBTest db = new EntitiesDBTest())
{
books = db.BOOKS.OrderBy(b => b.TITLE).ToList();
}
var combo_HB = sender as ComboBox; // zmienna przyjmujaca wartosc z ComboBoxa
combo_HB.ItemsSource = books; // zrodlo opcji do wyboru
combo_HB.DisplayMemberPath = "GetTitleWithAuthor";
combo_HB.SelectedValuePath = "BOOKID";
// combo_HB.SelectedIndex = 1; // domyslnie wybrana opcja (domyslnie 0 czyli pierwsza)
con.Close(); // zamkniecie bazy danych
}
catch (Exception Ex)
{
MessageBox.Show("Błąd ładowania listy comboBoxa w historii książek\n " + Ex.Message, "Error 1", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
和
private void cBox_hisBooks_SelectionChanged(object sender, SelectionChangedEventArgs e) // ok
{
var selected_cBox_his_book_Item = sender as ComboBox; // przyjmuje wartosc z ComboBoxa
choiceBook_his = (int)selected_cBox_his_book_Item.SelectedValue;
if (choiceBook_his == 0)
MessageBox.Show("Aktualne pole ComboBox ma wartosc -1 lub 0\nWybierz wartośc z listy");}
【问题讨论】:
标签: wpf xaml combobox datagrid tabcontrol