Одно место для запуска является проектом Blinux:
, Что проект описывает, как получить Emacspeak (редактор с синтезом речи по тексту) и имеет много других ресурсов.
я работал с одним человеком, который является глазным видом, почти препятствовал тому, чтобы они использовали монитор - они преуспели с программным обеспечением Программы экранного доступа и провели много времени, использовав основанные на тексте приложения и оболочку.
список Википедии пакетов программы экранного доступа является другим местом для запуска: http://en.wikipedia.org/wiki/List_of_screen_readers
Выполнение обновлений
Когда пользователь редактирует данные клиентов в DataGrid, привязанный DataTable в памяти обновляется соответствующим образом. Однако эти обновления не записываются автоматически обратно в базу данных. Разработчик должен решить, когда изменения в DataTable записываются обратно в базу данных, в зависимости от требований приложения. Например, в некоторых случаях вам может потребоваться отправить пакет изменений с помощью кнопки «Отправить», или вы можете пожелать обновлять базу данных по мере того, как пользователь фиксирует каждое редактирование строки. Для их поддержки строки, содержащиеся в DataTable, имеют свойство RowState, которое указывает, содержат ли они изменения, которые должны быть синхронизированы с базой данных. Процесс синхронизации легко достигается с помощью метода Update TableAdapter. URL: Примеры WPF DataGrid
В следующем примере показано, как можно обрабатывать события RowChanged и RowDeleted, чтобы изменения в состоянии DataTable записывались в базу данных каждый раз, когда пользователь изменяет строку:
public CustomerDataProvider()
{
NorthwindDataSet dataset = new NorthwindDataSet();
adapter = new CustomersTableAdapter();
adapter.Fill(dataset.Customers);
dataset.Customers.CustomersRowChanged +=
new NorthwindDataSet.CustomersRowChangeEventHandler(CustomersRowModified);
dataset.Customers.CustomersRowDeleted +=
new NorthwindDataSet.CustomersRowChangeEventHandler(CustomersRowModified);
}
void CustomersRowModified(object sender, NorthwindDataSet.CustomersRowChangeEvent e)
{
adapter.Update(dataset.Customers);
}