1

FoxProで作成された現在のソフトウェアには、非常に優れた機能があります。グリッド上に何かを入力すると、検索機能が自動的に呼び出されます。

例:トラックのリストを含むグリッドがあります。グリッドをクリックしてトラック番号を入力すると、グリッドはグリッドのトラックレコードに直接移動します。

C#で実装する必要がありますが、どうすればよいですか?

PS状況によっては、グリッドに編集可能なフィールドがある場合があります。しかし、それが複雑すぎる場合は、実装しません-それらの編集可能なグリッドに実装します。

4

2 に答える 2

0

フォームコード内で次のようなことを試すことができます。

TextBox searchBox = new TextBox();
Timer searchTimer = new Timer();
bool keyPressed = true;

public Form1()
{
    InitializeComponent();
    yourDataGridView.KeyUp += new KeyEventHandler(dgv_KeyUp);
    searchTimer.Interval = 5000;
    this.Controls.Add(searchBox);
    searchBox.KeyUp += new KeyEventHandler(searchBox_KeyUp);
    searchTimer.Tick += new EventHandler(timerTick);
    searchTimer.Enabled = true;
}

void searchBox_KeyUp(object sender, KeyEventArgs e)
{
    keyPressed = true;
}

void dgv_KeyUp(object sender, KeyEventArgs e)
{
    searchBox.Show();
    searchBox.Text += e.KeyCode.ToString().ToLowerInvariant();
    searchBox.Location = Cursor.Position;
    searchBox.Focus();
    SendKeys.Send("{Right}");
    searchBox.BringToFront();
    // Do your sorting of your DataGridView here according to your search box
}

void timerTick(object sender, EventArgs e)
{
    keyPressed = !keyPressed;
    if (keyPressed)
    {
        searchBox.Text = "";
        searchBox.Hide();
    }
}

それはあなたにポップアップ「検索」を取得します、それはTextBox5秒後に消えます。ボックスのテキストを使用して、次のデータに適合すると思われる検索を実行できます。DataGridView

于 2012-10-24T22:32:36.567 に答える
-1

TextChangedイベントを使用して、グリッドの上にテキストボックスを配置できます。

-------------------
| TextBox here    | implement TextChanged event handler for the textbox
-------------------

-------------------

  GridView here      update this gridview when text changes


-------------------

protected void TextBox1_TextChanged(object sender, EventArgs) //this could be replaced with KeyUp event handlder
{
     string truckNo = TextBox1.Text;

     var newValues = findTrucksByNo(truckNo);

     truckGridView.DataSource = newValues; //rebind items to refresh grid view
}
于 2012-10-24T22:26:47.327 に答える