Я разрабатываю приложение для Windows (winforms) для устройства, работающего на Windows CE (устройство версии 6.0). Он поддерживает только 2.0 рамки. Мне нужно показать данные в «Datagrid» и при выборе строки данные будут сохранены и переданы в сервис.
Все выглядит хорошо, но когда я использовал Cntrl + C в сетке данных, он показал мне следующее необработанное исключение, сказав,
Текущий поток должен быть установлен в однопотоковый режим (STA), прежде чемOLE звонки могут быть сделаны. Убедитесь, что на вашей главной функции помечен атрибут STAThreadAttribute
Я искал в Google и попробовал несколько вещей.
Атрибут STAThread для основного метода, не работал
Использование событий Keypress, Keyup, Keydown не сработало
public void Customgrid(Data dt)
{
try
{
DataGridTableStyle myDataGridTableStyle = new DataGridTableStyle();
BindingSource myBindingSource = new BindingSource();
myDataGridTableStyle.MappingName = myBindingSource.GetListName(null);
DataGridTextBoxColumn colcargo = new DataGridTextBoxColumn();
colcargo.MappingName = "cargoId";
colcargo.HeaderText = "Cntr";
colcargo.Width = 150;
DataGridTextBoxColumn colyardposition = new DataGridTextBoxColumn();
colyardposition.MappingName = "stackable";
colyardposition.HeaderText = "Yardloc";
colyardposition.Width = 100;
myDataGridTableStyle.GridColumnStyles.Add(colcargo);
myDataGridTableStyle.GridColumnStyles.Add(colyardposition);
this.grid_wq.TableStyles.Clear();
this.grid_wq.TableStyles.Add(myDataGridTableStyle);
DataTable dt1 = new DataTable(myBindingSource.GetListName(null));
dt1.Columns.Add("cargoId");
dt1.Columns.Add("stackable");
if (dt.yardWQList != null)
{
for (int i = 0; i < dt.yardWQList.Length; i++)
{
string yardpos = dt.yardWQList[i].storageName + dt.yardWQList[i].storageBay + dt.yardWQList[i].storageRow + dt.yardWQList[i].storageTier;
dt1.Rows.Add(dt.yardWQList[i].cargoId, yardpos);
}
yardcount = dt1.Rows.Count;
}
if (dt.rakeWQList != null)
{
for (int i = 0; i < dt.rakeWQList.Length; i++)
{
dt1.Rows.Add(dt.rakeWQList[i].cargoId, "");
rakecount = dt1.Rows.Count;
}
}
dt1.DefaultView.AllowDelete = false;
dt1.DefaultView.AllowEdit = false;
dt1.DefaultView.AllowNew = false;
this.grid_wq.Font = new Font("Microsoft Sans Serif", 14, FontStyle.Regular);
subdt = dt1;
this.grid_wq.DataSource = dt1;
datacount = yardcount + rakecount;
subcount = datacount.ToString();
//tb_count.Text = datacount.ToString();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
Может кто-нибудь помочь мне отключить Ctrl + C или получитьтекущее значение ячейки без таких необработанных исключений.
![enter image description here](https://i.stack.imgur.com/z41uP.png)