0

私は食料品店や店のc# プロジェクトを作成しています。そして、セルを自動提案するようにプログラムしたデータグリッドがあり、正常に機能しています。

問題は 1 つだけです。データグリッド内の 1 つの列 (BARCODE 列など) を、すべての列ではなく自動提案のみのテキスト ボックスにしたい。

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    var source = new AutoCompleteStringCollection();
    string cnn = (@"Data Source=TaLy-PC;Initial Catalog=dbMarketi;Integrated Security=True;Pooling=False");
    SqlConnection connection = new SqlConnection(cnn.ToString());
    SqlCommand command = new SqlCommand("Select Barcode FROM tblDepo", connection);

    try
    {
        connection.Open();
        {
            SqlDataReader drd = command.ExecuteReader();
            while (drd.Read())
            {
                // this.comboBoxEx1.Items.Add(drd.GetString(0).ToString());
                source.AddRange(new string[] { drd.GetString(0).ToString() });
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message.ToString());
    }
    connection.Close();

    TextBox dgvEditBox = e.Control as TextBox;
    if (dgvEditBox != null)
    {
        dgvEditBox.AutoCompleteMode = AutoCompleteMode.Suggest;
        dgvEditBox.AutoCompleteCustomSource = source;
        dgvEditBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
    }
 }
4

2 に答える 2

0

あなたのコードはほぼ正しいです。

あなたのコードを修正するために私がすることは、EditingControlShowing Eventhandler を使用して、基本的に、任意の列をテキストボックスとして扱うことです。

特定の1列のみをテキストボックスとして扱いたい場合は、次のようなチェックを実行します:-

 // EditingCOntrol Showing

    If(datagridview.CurrentCell.ColumnIndex == 1)
    {
        TextBox dgvEditBox = e.Control as TextBox;
        if (dgvEditBox != null)
        {
            dgvEditBox.AutoCompleteMode = AutoCompleteMode.Suggest;
            dgvEditBox.AutoCompleteCustomSource = source;
            dgvEditBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
        }
    }


// public Object 

 public AutoCompleteStringCollection source = new AutoCompleteStringCollection();
于 2013-01-16T20:28:43.557 に答える
0

これは提案です。あなたAutoCompleteStringCollectionとバーコードのクエリを分けてみてくださいProducts

private AutoCompleteStringCollection source  = new AutoCompleteStringCollection();

            private void loadAutoCompleteStringCollection();
            {
                string cnn = (@"Data Source=TaLy-PC;Initial Catalog=dbMarketi;Integrated Security=True;Pooling=False");
                source.Clear();
                SqlConnection connection = new SqlConnection(cnn.ToString());
                SqlCommand command = new SqlCommand("Select Barcode FROM tblDepo", connection);

                try
                {
                    connection.Open();
                    {
                        SqlDataReader drd = command.ExecuteReader();
                        while (drd.Read())
                        {
                            // this.comboBoxEx1.Items.Add(drd.GetString(0).ToString());
                            source.AddRange(new string[] { drd.GetString(0).ToString() });
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message.ToString());
                }
                finally
                {
                    connection.Close();
                }
            }

            private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
            {
                TextBox dgvEditBox = e.Control as TextBox;
                if (dataGridView1.CurrentCell.ColumnIndex == 1)
                {
                    if (dgvEditBox != null)
                    {
                        dgvEditBox.AutoCompleteMode = AutoCompleteMode.Suggest;
                        dgvEditBox.AutoCompleteCustomSource = source;
                        dgvEditBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
                    }
                }
            }

            //If you want to reload the AutoCompleteStringCollection
            private void button1_Click(object sender, System.EventArgs e)
            {
                loadAutoCompleteStringCollection();
            }
于 2013-01-16T19:47:28.820 に答える