C# DataGridView كبيرة من الخلايا:المحتوى لم واضحة تماما, التمرير يتخطى الخليوي

StackOverflow https://stackoverflow.com/questions/1626879

سؤال

لقد واجهت سيئة وليس مشكلة مع DataGridView التحكم (ويندوز.أشكال .NET Framework 3.0) عندما يكون هناك DataGridViewCell أكبر من DataGridView نفسها.عندما الخلايا الكبيرة يتم تمريره إلى عرض يعرض عادة قطع في الجزء السفلي لأنه أكبر من العرض.إذا كنت انتقل لأسفل أبعد من ذلك في نهاية المطاف "يستقر" في أعلى ويبقى هناك حتى تصل إلى عتبة معينة.ثم الصف التالي سوف يتم عرضها في الجزء العلوي و "كبيرة" الصف يختفي.

بسبب أنك أبدا قادرا على رؤية كاملة محتويات الخلايا الكبيرة.

هنا مثال على الكود:

using System;
using System.Windows;

namespace LoggerTextBox {
public class TestForm : Form
{
    public TestForm()
    {
        Text = "DataGridView Large Cell Example";
        SetBounds(0, 0, 300, 200, BoundsSpecified.Width | BoundsSpecified.Height);

        DataGridView dataGridView = new DataGridView();
        dataGridView.Dock = DockStyle.Fill;
        dataGridView.ScrollBars = ScrollBars.Both;
        dataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders;
        Controls.Add(dataGridView);

        DataGridViewColumn column = new DataGridViewTextBoxColumn();
        column.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
        column.CellTemplate.Style.WrapMode = DataGridViewTriState.True;
        dataGridView.Columns.Add(column);

        // normal row
        DataGridViewRow row = new DataGridViewRow();
        DataGridViewCell cell = (DataGridViewTextBoxCell)column.CellTemplate.Clone();
        cell.Value = "Foo";
        row.Cells.Add(cell);
        dataGridView.Rows.AddRange(row);

        // multiline row
        row = new DataGridViewRow();
        cell = (DataGridViewTextBoxCell)column.CellTemplate.Clone();
        cell.Value =
            "Lorem ipsum dolor sit amet, consetetur sadipscing elitr," + Environment.NewLine +
            "sed diam nonumy eirmod tempor invidunt ut labore et doloreLorem," + Environment.NewLine +
            "ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy," + Environment.NewLine +
            "eirmod tempor invidunt ut labore et dolore magna aliquyam erat,," + Environment.NewLine +
            "sed diam voluptua. At vero eos et accusam et justo duo dolores et," + Environment.NewLine +
            "ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est," + Environment.NewLine +
            "Lorem ipsum dolor sit amet. magna aliquyam erat, sed diam voluptua.," + Environment.NewLine +
            "At vero eos et accusam et justo duo dolores et ea rebum. Stet clita," + Environment.NewLine +
            "kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.";
        row.Cells.Add(cell);
        dataGridView.Rows.AddRange(row);

        // normal row
        row = new DataGridViewRow();
        cell = (DataGridViewTextBoxCell)column.CellTemplate.Clone();
        cell.Value = "Bar";
        row.Cells.Add(cell);
        dataGridView.Rows.AddRange(row);
    }

    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new TestForm());
    }
}
} // namespace

أي فكرة عن كيفية حل هذه المشكلة ؟

هل كانت مفيدة؟

المحلول

أود أن اقتطاع أي محتويات الخلية تتجاوز حجم معين (مع المضمر للدلالة على الاقتطاع) و تسمح الخلية النقر على عرض نافذة منبثقة مع كامل محتويات مرئية في تمرير النافذة.أو أنا يمكن أن تجعل محتويات هذه يحتمل أن تكون خلايا كبيرة في العرف UserControl هذا في حد ذاته يحتوي على التمرير إذا كان النص هو أبعد من مدة معينة.

كنت الوقوع في مشكلة أن النتائج من DataGridView تستخدم في غير مقصودة الطريق ، لذلك أنا لا أستغرب أن يوجد بسيطة, المدمج في طريقة التعامل مع هذا.

التحديث:لعرض سجلات ، ReportViewer قد يكون أكثر ملاءمة التحكم.وهنا بعض الروابط عن استخدامه:

http://www.codeproject.com/KB/cs/reportdisplay.aspx

http://www.microsoft.com/Downloads/details.aspx?FamilyID=f38f7037-b0d1-47a3-8063-66af555d13d9&displaylang=en

http://www.devx.com/dotnet/Article/30424/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top