2016-08-09 1 views
0

Я использую gridview в приложении Windows C#. Одна из ячеек имеет длинную строку текста (см. Ниже), но всякий раз, когда она привязана к сетке, ячейка обрезается, а полоса прокрутки does not get to end of the grid отображает полный текст. Полоса прокрутки не прокручивается плавно при перетаскивании мышью.Текст, обрезанный в ячейке C# gridview windows

Я пробовал различные комбинации для режимов RowSize и ColumnSize`, но не повезло.

void FillGrid() 
{ 
    DataTable tasktable = new DataTable(); 
    tasktable.Columns.Add("Logged By", typeof(string)); 
    tasktable.Columns.Add("Date", typeof(DateTime)); 
    tasktable.Columns.Add("Notes", typeof(string)); 
    DataRow dr1; 
    //for (int i = 0; i < 100; i++) 
    //{ 
    dr1 = tasktable.NewRow(); 
    dr1[0] = "Sunit Shah"; 
    dr1[1] = System.DateTime.Now; 
    dr1[2] = "Test Note"; 
    tasktable.Rows.Add(dr1); 
    //} 
    dr1 = tasktable.NewRow(); 
    dr1[0] = "Sunit Shah"; 
    dr1[1] = System.DateTime.Now; 
    dr1[2] = "Test Note"; 
    dr1[2] = "Paul Pogba will have a medical at Manchester United on Monday after 
      Juventus granted permission for him to seal a potential world record 
      transfer.Juventus manager Massimo Allegri refused to be drawn further 
      on the transfer when he was asked about it in his post-match press 
      conference following a friendly against West Ham at the London Stadium, 
      but an official at the Italian club confirmed they had authorised the 
      midfielder to have United doctors assess him ahead of the move. 
      Allegri merely said: ‘I spoke about Pogba the day before, we have 
      just finished a match and I don’t know much more, we will see on Monday 
      if he is a still Juventus player.’"; 

    tasktable.Rows.Add(dr1); 
    DataTable fillNotesGrid = new DataTable(); 
    fillNotesGrid = (from row in tasktable.AsEnumerable() 
        orderby row.Field<DateTime>("Date") descending 
        select row).CopyToDataTable(); 
    dgvSIDetailsNotes.DataSource = fillNotesGrid;  
} 
+0

Можете ли вы опубликовать код, который вы используете для отображения сетки? – Interminable

+0

Я только что добавил – Hemil

+0

Я бы подумал, почему вы должны отображать указанный текст в виде сетки в первую очередь. Возможно, было бы лучше показать его вне сетки в своем собственном текстовом поле, которое изменяется при выборе другой строки. – Takarii

ответ

0

Из того, что я могу собрать, похоже, ваша проблема не в том, что это усечение данных, то, что это привязка к клеткам при прокрутке, так что это на самом верху каждой ячейки при прокрутке. Если он слишком большой для доступного пространства, вы увидите только ту часть верхней части этой строки, которую вы можете поместить. В принципе, он ведет себя как Microsoft Excel.

Я не думаю, что есть способ отключить это поведение в стандартном управлении DataGridView.

HOWEVER, в качестве обходного пути вы можете добавить DataGridView в System.Windows.Forms.Panel и сделать Panel прокруткой для вас!

Просто сделайте DataGridView ребенок контроля Panel, и установите Panel «s AutoScroll свойство true и тому DataGridView» s AutoSize свойство true и что следует сделать трюк.

EDIT

Я включил некоторые исходный код, чтобы попытаться сделать вещи ясно.

Это исходный код формы (с телом FillGrid()) опущен, так как он идентичен исходному коду в вашем вопросе).

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 

     dataGridView1.DefaultCellStyle.WrapMode = DataGridViewTriState.True; //I'm assuming this is already set in your own source code as the cell is wrapping its text in your screenshot. 
     panel1.AutoScroll = true; 
     dataGridView1.AutoSize = true; 

     FillGrid(); 
    } 

    void FillGrid() 
    { 
     ... 
    } 
} 

Это как элементы управления создаются в Form1.Designer.cs:

private System.Windows.Forms.DataGridView dataGridView1; 
private System.Windows.Forms.Panel panel1; 

Это сгенерированный InitializeComponent() метод в конструкторе.

private void InitializeComponent() 
    { 
     this.dataGridView1 = new System.Windows.Forms.DataGridView(); 
     this.panel1 = new System.Windows.Forms.Panel(); 
     ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); 
     this.panel1.SuspendLayout(); 
     this.SuspendLayout(); 
     // 
     // dataGridView1 
     // 
     this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; 
     this.dataGridView1.Location = new System.Drawing.Point(3, 3); 
     this.dataGridView1.Name = "dataGridView1"; 
     this.dataGridView1.Size = new System.Drawing.Size(145, 122); 
     this.dataGridView1.TabIndex = 0; 
     // 
     // panel1 
     // 
     this.panel1.Controls.Add(this.dataGridView1); 
     this.panel1.Location = new System.Drawing.Point(12, 12); 
     this.panel1.Name = "panel1"; 
     this.panel1.Size = new System.Drawing.Size(260, 126); 
     this.panel1.TabIndex = 1; 
     // 
     // Form1 
     // 
     this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
     this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
     this.ClientSize = new System.Drawing.Size(284, 261); 
     this.Controls.Add(this.panel1); 
     this.Name = "Form1"; 
     this.Text = "Form1"; 
     ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); 
     this.panel1.ResumeLayout(false); 
     this.ResumeLayout(false); 

    } 

Это должно быть все, что необходимо для тиражирования этого решения в тестовом проекте.

Если у вас возникли проблемы с этим в вашем основном проекте, тогда у вас может быть другой код, который мешает.

+0

Мы попробовали. Но это не работает. Мы добавили панель и сохранили ее свойство AutoScroll до True Сохраненные полосы прокрутки данных Gridview до None И сохранили Autosize в true во время выполнения. Такое же поведение. Не уверен, что я делаю неправильно – Hemil

+0

@Hemil Я обновил ответ, чтобы включить в него некоторый исходный код, который должен вам помочь. Если вы продолжаете испытывать проблемы, вам нужно будет предоставить дополнительную информацию о том, что именно вы делаете, с чем работаете и т. Д. – Interminable

Смежные вопросы