PDA

View Full Version : فعال بودن یک تابع و اختلال در عملکرد کنترل های دیگر



hashtgerd2
دوشنبه 21 بهمن 1392, 20:13 عصر
من تو یکی از تاپیک ها کدی واسه جابه جایی بین سلول های دیتاگرید ویو با زدن کلید enter برداشتم و استفاده کردم مشکلی نداره
ولی تو فرمی که دارم هم دیتاگرید هستش و هم کمبوباکس که کمبو باکس رو با کد زیر به دیتابیس بایند کردم
DataTable table2 = new DataTable();
using (SqlConnection sqlConn = new SqlConnection(@"server=.\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath.ToString() + "\\good.MDF;Integrated Security=True;Connect Timeout=10;User Instance=True")) //use your conn. string here
{
using (SqlDataAdapter da = new SqlDataAdapter(@"SELECT c_ID,c_name FROM customer", sqlConn))
da.Fill(table2);
}
cmbcustomer.DataSource = new BindingSource(table2, null);
cmbcustomer.DisplayMember = "c_name";
cmbcustomer.ValueMember = "c_ID";
try { lblC_ID.Text = cmbcustomer.SelectedValue.ToString(); }
catch { }
cmbcustomer.Focus();
با کد زیر هم تغییر کنه
private void cmbcustomer_SelectedIndexChanged(object sender, EventArgs e)
{
cmbcustomer.ValueMember = "c_ID";
lblC_ID.Text = cmbcustomer.SelectedValue.ToString();
}
وقتی تابع رو تو برنامه استفاده میکنم
دیگه کلید های بالا و پایین و اسکرول موس کار نمیکنه واسه جابه جایی عناصر و انتخاب عناصر تو کمبوباکس کار نمیکنه چون که در تابع برای کلید های بالا پایین رو براشون کد اختصاصی تعریف کرده
--
اینم کد حرکت بین سلول در دیتاگریدویو با زدن اینتر
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
const int WM_KEYDOWN = 0x100;
const int WM_SYSKEYDOWN = 0x104;
if ((msg.Msg == WM_KEYDOWN) || (msg.Msg == WM_SYSKEYDOWN))
{
switch (keyData)
{
case Keys.Enter:
try
{
dataGridView1.CurrentCell = dataGridView1[dataGridView1.CurrentCell.ColumnIndex + 1, dataGridView1.CurrentCell.RowIndex];
}
catch { }
return true;
case Keys.Right:
try
{
dataGridView1.CurrentCell = dataGridView1[dataGridView1.CurrentCell.ColumnIndex - 1, dataGridView1.CurrentCell.RowIndex];
}
catch { }
return true;
case Keys.Left:
try
{
dataGridView1.CurrentCell = dataGridView1[dataGridView1.CurrentCell.ColumnIndex + 1, dataGridView1.CurrentCell.RowIndex];
}
catch { }
return true;
case Keys.Up:
try
{
dataGridView1.CurrentCell = dataGridView1[dataGridView1.CurrentCell.ColumnIndex, dataGridView1.CurrentCell.RowIndex - 1];
}
catch { }
return true;
case Keys.Down:
try
{
dataGridView1.CurrentCell = dataGridView1[dataGridView1.CurrentCell.ColumnIndex, dataGridView1.CurrentCell.RowIndex + 1];
}
catch { }
return true;
}
}
return base.ProcessCmdKey(ref msg, keyData);
}

نمونه ساده برنامه رو هم با دیتابیس اپ کردم 300KB
http://altobelli.ir/test/WindowsFormsApplication9.zip