Визуальный просмотр и редактирование двумерного массива - VB / C # - PullRequest
1 голос
/ 12 июня 2010

Я никогда лично не использовал какие-либо элементы управления данными в Visual Studio. Мне нужно просмотреть и редактировать двумерный байтовый массив, 16x15 объектов. Есть ли какой-либо элемент управления, способный редактировать эту информацию?

Я пытался получить доступ к данным с помощью DataViewGrid, но не уверен, как его использовать.

Было бы здорово отредактировать эту информацию через строки и столбцы, например, как в Excel.

Спасибо!


В такие времена я хотел бы просто использовать несколько текстовых полей и присваивать им каждое значение индекса. Ох VB6, как я по тебе скучаю: P

Ответы [ 3 ]

1 голос
/ 12 июня 2010

"В такие времена я хотел бы просто использовать несколько текстовых полей и присваивать им каждому значение индекса. Ох, VB6, как я по тебе скучаю."поля и просто добавьте каждый элемент управления TextBox в список.Вы даже можете сохранить индекс текстового поля в его свойстве Tag.

   Public Class Form1

    Private _textBoxes As New List(Of TextBox)

    Public Sub New()
        InitializeComponent()
        _textBoxes.Add(TextBox1)
        _textBoxes.Add(TextBox2)
        _textBoxes.Add(TextBox3)
        For Each oTextBox As TextBox In _textBoxes
            AddHandler oTextBox.Enter, AddressOf TextBox_Enter
            AddHandler oTextBox.Leave, AddressOf TextBox_Leave
            oTextBox.Tag = _textBoxes.IndexOf(oTextBox)
        Next
        For Each oTextBox As TextBox In _textBoxes
            Debug.WriteLine(CInt(oTextBox.Tag), "Index of " + oTextBox.Name)
        Next
    End Sub

    Private Sub TextBox_Enter(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim iIndex As Integer = _textBoxes.IndexOf(CType(sender, TextBox))
        Debug.WriteLine(iIndex, "IndexOf")
        Debug.WriteLine(DirectCast(sender, TextBox).Name, "Enter")
    End Sub

    Private Sub TextBox_Leave(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim iIndex As Integer = _textBoxes.IndexOf(CType(sender, TextBox))
        Debug.WriteLine(iIndex, "IndexOf")
        Debug.WriteLine(DirectCast(sender, TextBox).Name, "Leave")
    End Sub

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        _textBoxes(1).BackColor = Color.Tomato
    End Sub

End Class

(Я ничего не пропускаю в VB. .NET Framework и VB.NET потрясающие.)

1 голос
/ 12 июня 2010

После всего лишь 20 минут поиска (и изменения условий поиска) я нашел отличное решение (VB.NET)

Public Class Form1
    Dim data As New DataTable

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim i As Integer

        For i = 0 To 15
            data.Columns.Add(New DataColumn("X" & i, GetType(Byte)))
        Next i

        For i = 0 To 14
            Dim dr = data.NewRow()
            data.Rows.Add(dr)
        Next

        DataGridView1.DataSource = data

    End Sub
End Class

Кредит идет на: http://www.velocityreviews.com/forums/t106436-binding-multidimensional-array-to-datagrid.html

0 голосов
/ 12 июня 2010

Ниже приведена часть моего визуализатора отладки Array ( ftp: //missico.net/ArrayVisualizer.zip)

        //' x is columns
        //' y is rows

        //' x is first dimension
        //' y is second dimension

        //'create data table
        DataTable oData = new DataTable("Array");

        //'handle columns
        for (int x = 0; x <= _array.GetUpperBound(0); x++) {
            oData.Columns.Add(x.ToString(), typeof(string));
        }

        //'populate data
        for (int iRow = 0; iRow <= _array.GetUpperBound(1); iRow++) {
            DataRow oRow = oData.NewRow();
            for (int iCol = 0; iCol <= _array.GetUpperBound(0); iCol++) {
                oRow[iCol] = _array.GetValue(iCol, iRow);
            }
            oData.Rows.Add(oRow);
        }
        oData.AcceptChanges();

        //'data source
        __grid.DataSource = oData;

        //'handle row index
        int j = 0;
        foreach (DataGridViewRow oRow in __grid.Rows) {
            oRow.HeaderCell.Value = j.ToString();
            j += 1;
        }

        //'disallow sorting
        foreach (DataGridViewColumn oCol in __grid.Columns) {
            oCol.SortMode = DataGridViewColumnSortMode.NotSortable;
        }

        //'resize everything
        __grid.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
        __grid.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...