Я видел ту же проблему. Я удалил этот файл jar, а затем щелкнул правой кнопкой мыши по проекту, выбрал maven и сделал «обновить проект ...». Баночка была снова загружена, и проблема исчезла.
Попробуйте сделать столбец, а не отдельные ячейки, только для чтения перед связыванием данных:
this.dgrid.Columns["colName"].ReadOnly = true;
Если вам нужно сделать для отдельных ячеек в столбце, вы будете нужно зациклить и установить их следующим образом:
this.dgridvwMain.Rows[index].Cells["colName"].ReadOnly = true;
Как только столбец станет доступен только для чтения (см. Ответ Рашми), вы можете обработать это событие ...
private void dataGridView1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Tab)
{
Boolean readOnly = (sender as DataGridView).SelectedCells[0].ReadOnly;
return;
}
}
Что получит свойство следующей ячейки только для чтения.
Спасибо
Здесь есть очень хороший пример:
http://blogs.msdn.com/netcfteam/archive/2006/04/25/583542.aspx
Вам просто нужно override Paint ()
, я использовал это на компактной платформе, чтобы изменить цвет фона в зависимости от содержимого ячейки, поэтому в том же примечании у вас не должно возникнуть проблем с установкой их только для чтения.
Я этого не пробовал.
Но вы можете установить для свойства readonly ячейки значение true (согласно Рашми) в событии RowEnter?
Думаю, событие RowEnter должно срабатывать при переходе от одной строки к другой (или должно срабатывать при переходе из ячейки A1 в B3).
Это вообще помогает?
Не могли бы вы использовать столбец шаблона вместо связанного столбца с условием доступности поля только для чтения?
Затем вы можете представить метку только для чтения и текстовое поле для редактирования. Ярлыки не будут влиять на ваш индекс вкладок.
<asp:TemplateColumn>
<ItemTemplate>
<%
if ( <%# Eval( "ReadOnlyFlag" ) %> )
{
%>
<asp:Label Text="<%# Eval( "BoundColumn" ) %>" />
<%
}
else
{
%>
<asp:Textbox Text="<%# Eval( "BoundColumn" ) %>" />
<%
}
%>
</ItemTemplate>
</asp:TemplateColumn>