|
При выполнении в лабораторной работе упражнения №1 , а именно при выполнении нижеследующего кода: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using Microsoft.Xna.Framework.Graphics;
namespace Application1 { public partial class MainForm : Form { // Объявим поле графического устройства для видимости в методах GraphicsDevice device;
public MainForm() { InitializeComponent();
// Подпишемся на событие Load формы this.Load += new EventHandler(MainForm_Load);
// Попишемся на событие FormClosed формы this.FormClosed += new FormClosedEventHandler(MainForm_FormClosed); }
void MainForm_FormClosed(object sender, FormClosedEventArgs e) { // Удаляем (освобождаем) устройство device.Dispose(); // На всякий случай присваиваем ссылке на устройство значение null device = null; }
void MainForm_Load(object sender, EventArgs e) { // Создаем объект представления для настройки графического устройства PresentationParameters presentParams = new PresentationParameters(); // Настраиваем объект представления через его свойства presentParams.IsFullScreen = false; // Включаем оконный режим presentParams.BackBufferCount = 1; // Включаем задний буфер // для двойной буферизации // Переключение переднего и заднего буферов // должно осуществляться с максимальной эффективностью presentParams.SwapEffect = SwapEffect.Discard; // Устанавливаем размеры заднего буфера по клиентской области окна формы presentParams.BackBufferWidth = this.ClientSize.Width; presentParams.BackBufferHeight = this.ClientSize.Height;
// Создадим графическое устройство с заданными настройками device = new GraphicsDevice(GraphicsAdapter.DefaultAdapter, DeviceType.Hardware, this.Handle, presentParams); }
protected override void OnPaint(PaintEventArgs e) { device.Clear(Microsoft.Xna.Framework.Graphics.Color.CornflowerBlue);
base.OnPaint(e); } } } Выбрасывается исключение: Невозможно загрузить файл или сборку "Microsoft.Xna.Framework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=6d5c3888ef60e27d" или один из зависимых от них компонентов. Не удается найти указанный файл. Делаю все пунктуально. В чем может быть проблема? |
Опубликован: 05.08.2010 | Доступ: свободный | Студентов: 2011 / 47 | Оценка: 4.50 / 4.40 | Длительность: 60:26:00
Тема: Программирование
Специальности: Программист, Архитектор программного обеспечения
Самостоятельная работа 6:
Редактирование данных OLE DB средствами ADO.NET
Упражнение 5. Работа с объектом XmlDataDocument
Объект XmlDataDocument хранит в себе данные, загруженные из БД, сразу в двух форматах: обычный набор данных DataSet и Xml-формат данных. В некоторых случаях это может быть полезным. В этом упражнении проиллюстрируем некоторые возможности объекта XmlDataDocument.
-
Добавьте
к приложению новый проект оконного приложения с именем WinForms5
-
Скопируйте
из предыдущего проекта WinForms4 в корневой узел проекта WinForms5 папку Data вместе с файловой БД Northwind.mdb.
На вопрос мастера конфигурации скажите Cancel
-
В панели Solution
Explorer выделите файл БД Northwind.mdb и
в панели Properties установите для него- Build Action=None
- Copy to Output Directory=Copy if newer
-
Добавьте
для корневого узла проекта WinForms5 командой Add/New Item заготовку файла конфигурации приложения с именем App.config
Иногда бывает удобно не прятать строку соединения в код приложения, а вынести ее в конфигурационный файл, чтобы при изменении условий выполнения не исправлять сам код. В этом упражнении мы и применим такой способ. При наличии множества БД можно заготовить несколько строк соединения в конфигурационном файле с разными именами, а в извлекать нужную строку по ее имени без изменения кода самого приложения.
-
Заполните
конфигурационный файл кодом настройки строки соединения с
БД, значение которой мы будем извлекать из кода приложения
во время выполнения
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="MyNorthwind"
connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Data\Northwind.mdb"
providerName="System.Data.OleDb" />
</connectionStrings>
</configuration>-
Выделите
корневой узел проекта WinForms5 и командой Project/Add Reference добавьте
к проекту библиотечную сборку System.configuration.dll,
в которой находится нужный нам класс ConfigurationManager для
работы с конфигурационным файлом -
Выделите
корневой узел проекта WinForms5 и командой Project/WinForms5 Properties установите
для вкладки Application список Output type в
значение Console Application, чтобы
иметь возможность просматривать информацию стандартного потока
вывода -
Заполните
файл Form1.cs проекта WinForms5 следующим
кодом
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
// Дополнительные пространства имен
using System.Data.OleDb;
using System.Data.Common;
using System.Xml;
using System.IO;
namespace WinForms5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
SetInterface();
Load();
}
WebBrowser browser;
DataGridView dataGridView;
void SetInterface()
{
this.Text = "Упражнение 5";
// Создаем сплиттер
SplitContainer split = new SplitContainer();
split.Orientation = Orientation.Horizontal;
split.Dock = DockStyle.Fill;
split.Parent = this;
// Создаем элементы отображения
dataGridView = new DataGridView();
dataGridView.Dock = DockStyle.Fill;
dataGridView.AutoSizeColumnsMode =
DataGridViewAutoSizeColumnsMode.Fill;
dataGridView.RowHeadersWidth = 25;// Служебный столбец
dataGridView.Parent = split.Panel1;
browser = new WebBrowser();
browser.Dock = DockStyle.Fill;
browser.Parent = split.Panel2;
}
DataSet LoadDataSet()
{
// Извлекаем строку соединения из файла App.config
String connectStr = System.Configuration.
ConfigurationManager.ConnectionStrings["MyNorthwind"].ConnectionString;
DataSet ds = new DataSet();
// Заполняем множественный набор данных из БД
using (OleDbConnection conn = new OleDbConnection(connectStr))
{
OleDbCommand selectCommand = conn.CreateCommand();// Команда получила соединение
OleDbDataAdapter adapter = new OleDbDataAdapter(selectCommand);
// Загружает данные и схему первой таблицы
selectCommand.CommandText = "SELECT EmployeeID, " +
"(LastName + ', ' + FirstName) AS FullName, " +
"Address, BirthDate, Region FROM Employees";
adapter.Fill(ds);
}
return ds;
}
XmlDataDocument document;
String path;
new void Load()
{
// Определяем полный путь к хранилищу данных
path = Application.StartupPath.ToString() + @"\Data\";
// Создаем Xml-документ и загружаем его данными
document = new XmlDataDocument(LoadDataSet());
// Связываем с сеткой для отображения
dataGridView.DataSource = document.DataSet;// Только для чтения
dataGridView.DataMember = "Table";// Дежурное имя, когда не задано явно
// Все тонкие ссылки можно объявить типом
// ближайшего абстрактного предка (просто так!)
TextWriter tw = new StringWriter();// Создали поток записи
document.Save(tw); ;// Сохраняем документ в потоке
document.Save(path + "XmlDataDocument.xml");// Сохранили в файле
// Выводим в консольное окно
TextReader tr = new StringReader(tw.ToString());// Создали поток чтения
String str = tr.ToString();// Если ничего нет, то будет null
while (str != null)
{
str = tr.ReadLine();
Console.WriteLine(str);
}
browser.Navigate(path + "XmlDataDocument.xml");
// Регистрируем обработчик события редактирования строки
document.DataSet.Tables[0].RowChanged +=
new DataRowChangeEventHandler(Form1_RowChanged);
}
void Form1_RowChanged(object sender, DataRowChangeEventArgs e)
{
document.Save(path + "XmlDataDocument.xml");
browser.Navigate(path + "XmlDataDocument.xml");
}
}
}-
Разберитесь
с кодом упражнения, запустите проект и удостоверьтесь, что
редактирование строк в формате DataSet немедленно
отражается и в Xml-представлении с помощью объекта XmlDataDocument.
Хотя здесь мы и не сохраняем изменения в самой БД

