为什么我的按钮在 c# 应用程序中不起作用 [英] why aren't my buttons working in c# application

查看:44
本文介绍了为什么我的按钮在 c# 应用程序中不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个链接到数据库的表单,控制该表单的按钮不起作用,我没有收到任何错误,只是没有发生任何事情.

I have a form which is linked to a database and the buttons which control the form are not working, I'm not getting any errors just simply nothing is happening.

DisplayRow 类

DisplayRow class

private void DisplayRow(int rowIndex)
    {
        // Check that we can retrieve the given row
        if (myDataTable.Rows.Count == 0)
            return; // nothing to display
        if (rowIndex >= myDataTable.Rows.Count)
            return; // the index is out of range

        // If we get this far then we can retrieve the data
        try
        {
            DataRow row = myDataTable.Rows[rowIndex];
            textBox1.Text = row["FilePath"].ToString();
            textBox2.Text = row["Subject"].ToString();
            textBox3.Text = row["Title"].ToString();
            textBox4.Text = row["Keywords"].ToString();
            textBox5.Text = row["MediaType"].ToString();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error in DisplayRow : \r\n" + ex.Message);
        }

    }

应该移动到下一条记录的按钮

The button which should move on to the next record

private void button1_Click(object sender, EventArgs e)
    {
        if (currentRecord < myDataTable.Rows.Count -1)
        {
            currentRecord++;
            DisplayRow(currentRecord);

        }

但就像我说的,当我运行应用程序时什么也没有发生,没有错误只是什么都没有.

But like i say when i run the app nothing happens, no errors just nothing.

按照 MyDataTable 的编码要求

as asked the coded for MyDataTable

private void Form1_Load(object sender, EventArgs e)
    {
        {
            String command = "SELECT * FROM Media";
            try
            {
                myConnection = new OleDbConnection(access7ConnectionString);
                myAdapter = new OleDbDataAdapter(access7ConnectionString, myConnection);
                myCommandBuilder = new OleDbCommandBuilder(myAdapter);
                myDataTable = new DataTable();
                FillDataTable(command);
                DisplayRow(currentRecord);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

        }

我正在运行的完整代码..

full code what I am running..

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace MediaPlayer
{
public partial class Media : Form
{

    // Use this connection string if your database has the extension .accdb
    private const String access7ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\MediaDatabase.accdb";
    // Use this connection string if your database has the extension .mdb
    private const String access2003ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\MediaDatabase.mdb";
    // Data components
    private DataTable myDataTable;

    // Index of the current record
    private int currentRecord = 0;

    private void FillDataTable(string selectCommand)
    {
        currentRecord = 0;
        OleDbConnection myConnection = new OleDbConnection(access7ConnectionString);
        OleDbDataAdapter myAdapter = new OleDbDataAdapter(selectCommand, myConnection);
        myDataTable = new DataTable();


        try
        {
            myConnection.Open();
            myAdapter.SelectCommand.CommandText = selectCommand;
            myAdapter.Fill(myDataTable);
            myConnection.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error in FillDataTable : \r\n" + ex.Message);
        }
        DisplayRow(currentRecord);

    }

    private void DisplayRow(int rowIndex)
    {
        // Check that we can retrieve the given row
        if (myDataTable.Rows.Count == 0)
            return; // nothing to display
        if (rowIndex >= myDataTable.Rows.Count)
            //resets the index to 0 when you get past the last record
            rowIndex = 0;
        //if rowIndex is less then 0 set it to the last row
        if (rowIndex < 0)
            rowIndex = myDataTable.Rows.Count - 1;


        // If we get this far then we can retrieve the data
        try
        {
            DataRow row = myDataTable.Rows[rowIndex];
            textBox1.Text = row["FilePath"].ToString();
            textBox2.Text = row["Subject"].ToString();
            textBox3.Text = row["Title"].ToString();
            textBox4.Text = row["Keywords"].ToString();
            textBox5.Text = row["MediaType"].ToString();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error in DisplayRow : \r\n" + ex.Message);
        }

    }




    public Media()
    {
        InitializeComponent();
        string command = "SELECT * FROM Media";
        //the try catch is in the FillDataTable method
        FillDataTable(command);
    }




    private void label2_Click(object sender, EventArgs e)
    {

    }

    private void button2_Click(object sender, EventArgs e)
    {
        //assuming this cycles through the data
        currentRecord++;
        DisplayRow(currentRecord);
    }

    private void button6_Click(object sender, EventArgs e)
    {
        //assuming this resets the data
        currentRecord = 0;
        this.DisplayRow(currentRecord);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        //assuming this cycles through the data
        currentRecord++;
        DisplayRow(currentRecord);
    }
}

}

推荐答案

private void DisplayRow(int rowIndex) 上放置一个调试器书签,看看在调试应用程序时书签是否突出显示.如果不是,则检查您调用显示行的循环是否正确

Place a debugger bookmark on private void DisplayRow(int rowIndex) and see if bookmark get highlighted while debugging the application. if not then check if your loop for calling display row is correct

这篇关于为什么我的按钮在 c# 应用程序中不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆