Пользовательская ширина DataGridview при вызове таблицы MySql

Я пытаюсь сделать программу, которая перечисляет имена всех вложенных папок выбранной папки, все это работает, но я не могу, кажется, сделать пользовательскую ширину для моего datagridview, я искал ответ в течение нескольких часов , но они в основном не будут работать, я пытался :

Gata.столбцы[0].ширина = 100;
или что-то вроде этого , но они не работают.

это тоже не сработало: MSDN-DataGridViewColumn.свойство width

кажется , что они в основном используются для несвязанных сеток, что я понятия не имею о том, что я пытался связать свою таблицу MySql с одной, но снова потерпел неудачу. Это в значительной степени 2-Я программа, которую я пишу, поэтому, пожалуйста, простите мой noobishness !

Я хочу, чтобы мой стол выглядел как на картинке здесь.

оператор auto-size и fill в свойствах сеток не сделает трюк.
Я проверил много ответов на stack-overflow, но никто не отвечает на это. Заранее спасибо за помощь !

вот код im с помощью :

            try
            {
                String sqlcon = "datasource=localhost;port=3306;username=anime;password=anime";
                MySqlConnection myanimedb0con = new MySqlConnection(sqlcon);
                MySqlDataAdapter myanimedb0ada = new MySqlDataAdapter();
                MySqlCommand myanimedb0cmd = new MySqlCommand("insert into anime.anime0list ( Anime_Name , Anime_Root ) values ( '" + MySql.Data.MySqlClient.MySqlHelper.EscapeString(dir.Name) + "' , '" + dir.Parent + "' );", myanimedb0con);
                MySqlCommandBuilder myanimedb0cb = new MySqlCommandBuilder(myanimedb0ada);
                myanimedb0ada.SelectCommand = myanimedb0cmd;
                DataTable Gate = new DataTable();
                myanimedb0ada.Fill(Gate);
                BindingSource b0Gate = new BindingSource();
                b0Gate.DataSource = Gate;
                this.Gate.DataSource = b0Gate;
                myanimedb0ada.Update(Gate);

                // Updating the table after adding an item

                MySqlCommand myanimedb0cmd2 = new MySqlCommand("select * from anime.anime0list ;", myanimedb0con);

                myanimedb0ada.SelectCommand = myanimedb0cmd2;

                myanimedb0ada.Fill(Gate);
                b0Gate.DataSource = Gate;
                this.Gate.DataSource = b0Gate;
                myanimedb0ada.Update(Gate);

2 ответа

  1. Если ваш DataGridViewпривязан слева и справа, как это кажется на скриншоте, вы должны рассмотреть возможность использования [DataGridViewColumn.FillWeight][1]свойства. Это свойство позволяет задать вес для каждого столбца, так что вы можете сказать, какой из них должен быть самым большим.

    Вы также должны посмотреть на [DataGridViewColumn.AutoSizeMode][2]отель.

    В вашем примере я бы установил AutoSizeModeAllCellsдля столбцов ID и Anime_root и AutoSizeModeFillдля столбца Anime_name.

    Наконец, можно посмотреть [DataGridView.MinimumWidth][3]свойство, чтобы определить минимальную ширину столбцов.

  2. Один из способов сделать это-установить ширину столбца по одному за раз, как это, если вы используете Windows forms по умолчанию или веб-элементы управления:

    private void Button5_Click(object sender, System.EventArgs e)
    {
        DataGridViewColumn column = dataGridView.Columns[0];
        column.Width = 60;
    }
    

    Вы также можете сделать это по столбцу, как это, если вам нравится:

    for (int i = 0; i < DataGridView1.Columns.Count; i++)
    {
        DataGridView1.Columns[i].Width = 30;
    }
    

    Или вы можете управлять им в рамках события…

    dataGridView1.ColumnAdded += new DataGridViewColumnEventHandler(dataGridView1_ColumnAdded);   
    void dataGridView1_ColumnAdded(object sender, DataGridViewColumnEventArgs e)   
    {   
        e.Column.Width = 30;   
    }
    

    Это должно сработать, gauranteed. Пожалуйста дайте мне знать если вы приходите право?