对于您这里的专家来说这可能很容易,但我试图找出如何在Visual Studio 2015中使用C#在Windows应用程序中调整数据网格的列。
我的代码如下。我已经阅读过像AutoResize这样的命令,但我无法弄清楚如何以及将它放在我的代码中。我尝试的所有内容都会出现语法错误,或者没有调整大小的选项:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication5
{
public partial class Main : Form
{
int BugID = 0;
public Main()
{
InitializeComponent();
}
private void txtUser_TextChanged(object sender, EventArgs e)
{
}
Reset();
FillDataGridView();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "There is an error. Please review");
}
finally
{
sqlCon.Close(); // close the connection
}
}
void FillDataGridView() // The below is to display the search results in the Data Grid View box using the stored procedure for search results
{
if (sqlCon.State == ConnectionState.Closed)
sqlCon.Open();
SqlDataAdapter sqlDa = new SqlDataAdapter("BugViewOrSearch", sqlCon);
sqlDa.SelectCommand.CommandType = CommandType.StoredProcedure;
sqlDa.SelectCommand.Parameters.AddWithValue("@BugIssue", txtSearch.Text.Trim());
DataTable dtbl = new DataTable();
sqlDa.Fill(dtbl);
dgvIssues.DataSource = dtbl;
sqlCon.Close();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void btnSearch_Click(object sender, EventArgs e)
{
try
{
FillDataGridView();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "There is an error. Please review");
}
}
private void dgvIssues_DoubleClick(object sender, EventArgs e)
{
if(dgvIssues.CurrentRow.Index != -1) // For updating an issue when double clicking on a row/issue
{
BugID = Convert.ToInt32(dgvIssues.CurrentRow.Cells[0].Value.ToString());
txtUser.Text = dgvIssues.CurrentRow.Cells[1].Value.ToString();
txtSubject.Text = dgvIssues.CurrentRow.Cells[2].Value.ToString();
txtDescription.Text = dgvIssues.CurrentRow.Cells[3].Value.ToString();
btnCreate.Text = "Update Issue"; // Changes the button from 'Create Issue' to 'Update Issue'
btnDelete.Enabled = true;
}
}
void Reset() // To reset all field of the form
{
txtUser.Text = txtSubject.Text = txtDescription.Text = "";
btnCreate.Text = "Create Issue";
BugID = 0;
btnDelete.Enabled = false;
}
private void btnRefresh_Click(object sender, EventArgs e)
{
Reset(); // Calls the reset function above
}
private void Main_Load(object sender, EventArgs e)
{
Reset();
FillDataGridView();
// To show all bugs/issues in the database
}
}
}
我需要列适合文本或至少填充灰色空间。
任何提示都会有用。
谢谢
答案 0 :(得分:1)
你可以这样做。这将使列足够宽,以便内容适合它们:
void FillDataGridView() // The below is to display the search results in the Data Grid View box using the stored procedure for search results
{
// Your code here
// This is after your code
dgvIssues.AutoResizeColumns();
}
您还可以将参数传递给AutoResizeColumns
。它接受的参数是DataGridViewAutoSizeColumnsMode
类型的枚举。这样可以更好地控制自动调整大小。以下是如何做到这一点:
// This is the default so same as dgvIssues.AutoResizeColumns();
dgvIssues.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
以下是您对参数的不同选项:
//
// Summary:
// The column widths do not automatically adjust.
None = 1,
//
// Summary:
// The column widths adjust to fit the contents of the column header cells.
ColumnHeader = 2,
//
// Summary:
// The column widths adjust to fit the contents of all cells in the columns, excluding
// header cells.
AllCellsExceptHeader = 4,
//
// Summary:
// The column widths adjust to fit the contents of all cells in the columns, including
// header cells.
AllCells = 6,
//
// Summary:
// The column widths adjust to fit the contents of all cells in the columns that
// are in rows currently displayed onscreen, excluding header cells.
DisplayedCellsExceptHeader = 8,
//
// Summary:
// The column widths adjust to fit the contents of all cells in the columns that
// are in rows currently displayed onscreen, including header cells.
DisplayedCells = 10,
//
// Summary:
// The column widths adjust so that the widths of all columns exactly fill the display
// area of the control, requiring horizontal scrolling only to keep column widths
// above the System.Windows.Forms.DataGridViewColumn.MinimumWidth property values.
// Relative column widths are determined by the relative System.Windows.Forms.DataGridViewColumn.FillWeight
// property values.
Fill = 16
这是另一种方法,您可以具体告诉它每列的宽度:
void FillDataGridView() // The below is to display the search results in the Data Grid View box using the stored procedure for search results
{
// Your code here
// This is after your code
// For individual columns, do it like this:
foreach( var column in dgvIssues.Columns) {
column.Width = 100; // Or whatever you like
}
}