約 4,376,944 件
https://w.atwiki.jp/kimikage/pages/75.html
行のドラッグ&ドロップが可能なDataGridView。 ちょっとバグがあるけれど一応動作する。 DataSourceには対応できない。 ViewのCellに直接データを突っ込んで使用可能。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using System.Drawing; namespace MyReName.ctrl { class DragAbleDataGridView DataGridView { private int mintCurrentRowIndex = -1; private int mintNextRowIndex = -1; private bool mboolMoveToEndRowFlg = false; private int[] dragRowIndex; private bool Flg = true; private Label lblBar = new Label(); public Color DropDawnBarColor { get { return lblBar.BackColor; } set { lblBar.BackColor = value; } } /// summary /// コンストラクタ /// /summary public DragAbleDataGridView() { this.InitCtrl(); } /// summary /// コンポーネントの初期化処理 /// /summary private void InitCtrl() { // DataGridViewの初期設定 this.AutoGenerateColumns = false; this.BackgroundColor = Color.White; this.CellBorderStyle = DataGridViewCellBorderStyle.None; this.RowHeadersVisible = false; this.AllowUserToResizeRows = false; this.SelectionMode = DataGridViewSelectionMode.FullRowSelect; this.AllowUserToAddRows = false; this.AllowUserToDeleteRows = false; this.AllowDrop = true; this.ScrollBars = System.Windows.Forms.ScrollBars.Both; this.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing; this.ColumnHeadersDefaultCellStyle.WrapMode = DataGridViewTriState.False; // イベントを追加 this.DragDrop += new DragEventHandler(DragAbleDataGridView_DragDrop); this.DragEnter += new DragEventHandler(DragAbleDataGridView_DragEnter); this.MouseDown += new MouseEventHandler(DragAbleDataGridView_MouseDown); this.MouseMove += new MouseEventHandler(DragAbleDataGridView_MouseMove); this.DragOver += new DragEventHandler(DragAbleDataGridView_DragOver); this.DragLeave += new EventHandler(DragAbleDataGridView_DragLeave); this.QueryContinueDrag += new QueryContinueDragEventHandler(DragAbleDataGridView_QueryContinueDrag); this.RowValidating += new DataGridViewCellCancelEventHandler(DragAbleDataGridView_RowValidating); // ドラッグ中に表示するバーを追加 this.Controls.Add(lblBar); lblBar.Visible = false; lblBar.BackColor = Color.Red; lblBar.Size = new Size(this.Width, 2); } /// summary /// MouseDownイベント /// /summary /// param name="sender" /param /// param name="e" /param private void DragAbleDataGridView_MouseDown(object sender, MouseEventArgs e) { mintCurrentRowIndex = -1; // 左クリック以外はリターン if ((e.Button MouseButtons.Left) != MouseButtons.Left) { return; } // セルクリック以外はリターン DataGridView.HitTestInfo hitInfo = this.HitTest(e.X, e.Y); if (hitInfo.Type != DataGridViewHitTestType.Cell) { return; } mintCurrentRowIndex = hitInfo.RowIndex; // 既に選択されているセルを選択している場合(ここの動作がうまくいかない…) if (this.Rows[mintCurrentRowIndex].Selected ModifierKeys == Keys.None) { ReSetDragRowsIndexies(); Flg = true; } // 未選択のセルを選択している場合 else { dragRowIndex = null; Flg = false; } } /// summary /// 行の検証時の処理 /// /summary /// param name="sender" /param /// param name="e" /param private void DragAbleDataGridView_RowValidating(object sender, DataGridViewCellCancelEventArgs e) { if (Flg) { e.Cancel = true; Flg = false; } } /// summary /// MouseMoveイベント /// /summary /// param name="sender" /param /// param name="e" /param private void DragAbleDataGridView_MouseMove(object sender, MouseEventArgs e) { // 左ボタン以外はリターン if ((e.Button MouseButtons.Left) != MouseButtons.Left) { return; } // Row未選択はリターン if (mintCurrentRowIndex == -1) { return; } // ドラッグ開始 this.DoDragDrop(mintCurrentRowIndex, DragDropEffects.Move); } /// summary /// ドラッグ対象行のインデックスを記憶 /// /summary private void ReSetDragRowsIndexies() { dragRowIndex = new int[this.SelectedRows.Count]; for (int i = 0; i this.SelectedRows.Count; i++) { dragRowIndex[i] = this.SelectedRows[i].Index; } } /// summary /// DragOverイベント /// /summary /// param name="sender" /param /// param name="e" /param private void DragAbleDataGridView_DragOver(object sender, DragEventArgs e) { if (mintCurrentRowIndex == -1) { return; } e.Effect = DragDropEffects.Move; if (dragRowIndex == null) { ReSetDragRowsIndexies(); } // ドラッグ位置を取得 Point clientPoint = this.PointToClient(new Point(e.X, e.Y)); DataGridView.HitTestInfo hitInfo = this.HitTest(clientPoint.X, clientPoint.Y); mboolMoveToEndRowFlg = false; if (hitInfo.RowIndex == -1) { if (mintCurrentRowIndex == this.Rows.Count - 1) { mboolMoveToEndRowFlg = true; } } else { mintNextRowIndex = hitInfo.RowIndex; } if (mboolMoveToEndRowFlg) { Rectangle rec = this.GetRowDisplayRectangle(mintNextRowIndex, true); lblBar.Location = new Point(0, rec.Bottom); lblBar.Visible = true; } else if (mintCurrentRowIndex == mintNextRowIndex mintCurrentRowIndex == this.Rows.Count - 1) { Rectangle rec = this.GetRowDisplayRectangle(mintNextRowIndex, true); lblBar.Location = new Point(0, rec.Top); lblBar.Visible = true; } else if (mintCurrentRowIndex != mintNextRowIndex) { Rectangle rec = this.GetRowDisplayRectangle(mintNextRowIndex, true); lblBar.Location = new Point(0, rec.Top); mintCurrentRowIndex = mintNextRowIndex; lblBar.Visible = true; } } /// summary /// DataGridViewの外へドラッグしたらドラッグをキャンセル /// /summary /// param name="sender" /param /// param name="e" /param private void DragAbleDataGridView_DragLeave(object sender, EventArgs e) { if (!lblBar.Visible) { return; } ExitDrag(); } /// summary /// DragEnter /// /summary /// param name="sender" /param /// param name="e" /param private void DragAbleDataGridView_DragEnter(object sender, DragEventArgs e) { if (lblBar.Visible) { return; } e.Effect = DragDropEffects.All; } /// summary /// ドラッグ継続中 /// /summary /// param name="sender" /param /// param name="e" /param private void DragAbleDataGridView_QueryContinueDrag(object sender, QueryContinueDragEventArgs e) { // 右クリック押下時 if ((e.KeyState 2) == 2) { // ドラッグをキャンセル e.Action = DragAction.Cancel; ExitDrag(); } } /// summary /// 行データの移動 /// /summary /// param name="FromIndex" /param /// param name="ToIndex" /param /// returns 実際の移動先インデックス /returns private int MoveTo(int FromIndex, int ToIndex) { DataGridViewRow row; int MoveToIndex = ToIndex; if (FromIndex != ToIndex) { row = (DataGridViewRow)this.Rows[FromIndex].Clone(); for (int i = 0; i this.Columns.Count; i++) { row.Cells[i].Value = this.Rows[FromIndex].Cells[i].Value; } if (FromIndex ToIndex) { this.Rows.RemoveAt(FromIndex); this.Rows.Insert(ToIndex, row); } else if (FromIndex ToIndex) { if (mboolMoveToEndRowFlg) { this.Rows.RemoveAt(FromIndex); this.Rows.Insert(ToIndex, row); } else { this.Rows.RemoveAt(FromIndex); this.Rows.Insert(ToIndex - 1, row); MoveToIndex = ToIndex - 1; } } } return MoveToIndex; } private void DragAbleDataGridView_DragDrop(object sender, DragEventArgs e) { // 行のDragDropの場合 if (lblBar.Visible) { Flg = false; Array.Sort(dragRowIndex); int ShiftFront = 0; int ShiftBack = 0; int MoveFromIndex = 0; int MoveToIndex = 0; int MinRowIndex = mintCurrentRowIndex; int MaxRowIndex = mintCurrentRowIndex; int SelectionStaIndex = 0; // 行を移動 for (int i = 0; i dragRowIndex.GetLength(0); i++) { MoveFromIndex = dragRowIndex[i]; MoveToIndex = mintCurrentRowIndex; if (MinRowIndex MoveFromIndex) { MinRowIndex = MoveFromIndex; } else if (MinRowIndex MoveToIndex) { MinRowIndex = MoveToIndex; } if (MaxRowIndex MoveFromIndex) { MaxRowIndex = MoveFromIndex; } else if (MaxRowIndex MoveToIndex) { MaxRowIndex = MoveToIndex; } if (i 0) { if (MoveFromIndex MoveToIndex) { ShiftFront--; MoveFromIndex += ShiftFront; } else if (MoveFromIndex MoveToIndex) { if (dragRowIndex[i - 1] = MoveToIndex) { ShiftBack++; MoveToIndex += ShiftBack; } } } if (i == 0) { SelectionStaIndex = MoveTo(MoveFromIndex, MoveToIndex); } else { MoveTo(MoveFromIndex, MoveToIndex); } } // 移動後の行を選択 this.CurrentCell = this.Rows[SelectionStaIndex + ShiftFront].Cells[0]; this.ClearSelection(); for (int i = 0; i dragRowIndex.GetLength(0); i++) { this.Rows[SelectionStaIndex + ShiftFront + i].Selected = true; } ExitDrag(); } // DataGridView外からのDragDropの場合 else { //DragDropされたファイルパスをセルに追加 if (e.Data.GetDataPresent(DataFormats.FileDrop)) { foreach (string filePath in (string[])e.Data.GetData(DataFormats.FileDrop)) { if (this.Columns.Count 0) { this.Rows.Add(); this.Rows[this.Rows.Count - 1].Cells[0].Value = filePath; } } } } } /// summary /// ドラッグの終了処理 /// /summary private void ExitDrag() { mintCurrentRowIndex = -1; //_DragMode = eDraggingMode.None; lblBar.Visible = false; this.DoDragDrop(mintCurrentRowIndex, DragDropEffects.None); } } }
https://w.atwiki.jp/canjymax/pages/23.html
dataGridViewの内容をxmlに保存で保存したxmlファイルの内容をdataGridViewに表示します。 下準備として、フォーム上にdataGridView1とdataSet1とbutton1を貼り付けます。 dataSet1とdataGridView1のプロパティは dataGridViewの内容をxmlに保存 で設定した内容と同じにします。 button1のクリックイベントを private void button1_Click(object sender, EventArgs e) { dataSet1.ReadXml("test.xml"); } とすれば、ボタンクリックでXMLの内容がdataGridViewに反映されます。 また、列情報もXMLに保存されている場合、 private void button1_Click(object sender, EventArgs e) { dataSet1.Clear(); dataSet1.ReadXml("test.xml"); dataGridView1.DataSource = dataSet1; dataGridView1.DataMember = dataSet1.Tables[0].TableName; } とすれば、dataSetとdataGridViewのプロパティを変更しなくても、デザイナーに貼り付けるだけでOK!
https://w.atwiki.jp/hiyocco/pages/14.html
Viewのレイアウトの種類 以下は、ViewGroupクラスのサブクラスとなっているLayoutです。 テーブルレイアウト TableLayout 直列レイアウト LinearLayout 絶対位置指定レイアウト AbsoluteLayout 相対位置指定レイアウト RelativeLayout 1つのアイテムを表示する為のレイアウト FrameLayout レイアウトパラメータ LayoutParams LayoutParamsは、Viewが、その親コンポーネントにどうレイアウトさせるかを示すもので、 ベースのLayoutParamsには、widthとheightをどう描画させるかを指定するパラメータのみ定義されています。 属性 android layout_width android layout_height 指定できる値 FILL_PARENT(MATCH_PARENT) 親コンポーネントと同じ大きさ(padding分除く) WRAP_CONTENT そのコンポーネントが含むコンテンツの大きさ(+padding分) TableLayout LinearLayout AbsoluteLayout RelativeLayout FrameLayout
https://w.atwiki.jp/canjymax/pages/22.html
dataGridViewで編集した内容をxmlに保存するには、 dataSetのWriteXmlメソッドを使います。 まず下準備として、dataGridViewとdataSetの関連付けをします。 フォーム上にdataGridView1とdataSet1とbutton1を貼り付けて dataSet1のTablesに、適当な名前のテーブルを追加し、 Culumnsに列コレクションを作成します。 dataGridView1のプロパティを DataSource dataset1 DataMember Table1 ←上で追加したテーブル名 button1のクリックイベントに private void button1_Click(object sender, EventArgs e) { dataSet1.WriteXml("test.xml"); } と記述すれば、dataGridViewで編集した内容がXMLファイルに保存されます。 dataSetの列情報なども一緒に保存する場合は private void button1_Click(object sender, EventArgs e) { dataSet1.WriteXml("test.xml", XmlWriteMode.WriteSchema); } とすれば、保存されます。
https://w.atwiki.jp/restinpiece/pages/30.html
GridViewのテンプレートフィールドに行番号割当 概要 GridViewのテンプレートフィールドにbuttonコントロール配置した際に button毎に行番号を割り振る。 GridViewの行追加時に実行される Protected Sub GridView1_RowCreated1(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowCreated If e.Row.RowType = DataControlRowType.DataRow Then イベントからテンプレートフィールドに配置されたボタンを取得 Dim cmdEdit As Button = CType(e.Row.FindControl("cmdEdit"), Button) ボタンに行情報を配置 cmdEdit.CommandArgument = e.Row.RowIndex.ToString End If End Sub
https://w.atwiki.jp/plalayout/pages/183.html
子どもが作ったレイアウト
https://w.atwiki.jp/yuwie/pages/29.html
レイアウト設定(LAYOUTS) ページが表示された時はレイアウトの順序が新しい順になっています。Name(名前)Day Views(一日のビュー数)、Month Views(一ヶ月ビュー数)Total Views (トータルのビュー数)Rating(評価)順に並び変える事ができます。 検索したいキーワードを入力してレイアウトを検索します。 カテゴリーを選択してレイアウトを検索します。 使い方 検索して、気になるタイトルをクリックすると、レイアウトの上に上記画像が表示されます。そのレイアウトが気に入らなかったらGo Backで前のページに戻ります。 そのレイアウトを使いたい場合は、Use This Layoutをクリック。自分のプロフィールページがそのレイアウトになります。 とりあえず、お気に入りに追加したい場合はAdd To Favoritesでお気に入りに追加できます。お気に入りに追加したレイアウトはお気に入りで確認できます。
https://w.atwiki.jp/memo77/pages/46.html
PageLastUpdate 2007-11-13/today - /yesterday - DataGridViewSynchronizer 2007/11/13 上下に並べたふたつのDataGridViewの列表示を同期させるクラス。 Option Strict On Public Class DataGridViewSynchronizer Private grd1 As DataGridView Private grd2 As DataGridView Public Sub Add(ByRef datagridview1 As DataGridView, ByRef datagridview2 As DataGridView) Try Me.grd1 = datagridview1 Me.grd2 = datagridview2 For Each column As DataGridViewColumn In grd1.Columns If grd2.Columns.Contains(column.Name) = False Then MessageBox.Show("連動させるグリッドの列構成が違います。完全に一致したグリッドでなければ連動させることはできません。") End If Next For Each column As DataGridViewColumn In grd2.Columns If grd1.Columns.Contains(column.Name) = False Then MessageBox.Show("連動させるグリッドの列構成が違います。完全に一致したグリッドでなければ連動させることはできません。") End If Next grd1.SuspendLayout() grd2.SuspendLayout() For Each column1 As DataGridViewColumn In grd1.Columns Dim column2 As DataGridViewColumn = grd2.Columns(column1.Name) column2.DisplayIndex = column1.DisplayIndex column2.Frozen = column1.Frozen column2.HeaderText = column1.HeaderText column2.Resizable = column1.Resizable column2.Visible = column1.Visible column2.Width = column1.Width column2.AutoSizeMode = DataGridViewAutoSizeColumnMode.None Next AddHandler grd1.ColumnWidthChanged, AddressOf ColumnWidthChanged1 AddHandler grd1.ColumnDisplayIndexChanged, AddressOf ColumnDisplayIndexChanged1 AddHandler grd1.Scroll, AddressOf Scroll1 AddHandler grd1.ColumnStateChanged, AddressOf ColumnStateChanged1 AddHandler grd2.ColumnWidthChanged, AddressOf ColumnWidthChanged2 AddHandler grd2.ColumnDisplayIndexChanged, AddressOf ColumnDisplayIndexChanged2 AddHandler grd2.Scroll, AddressOf Scroll2 AddHandler grd2.ColumnStateChanged, AddressOf ColumnStateChanged2 grd1.ResumeLayout() grd2.ResumeLayout() Catch ex As Exception MessageBox.Show(ex.ToString) End Try End Sub Public Sub ColumnWidthChanged1(ByVal sender As Object, ByVal e As DataGridViewColumnEventArgs) Try If grd2.Columns(e.Column.Name).Width e.Column.Width Then grd2.Columns(e.Column.Name).Width = e.Column.Width End If Catch ex As Exception MessageBox.Show(ex.ToString) End Try End Sub Public Sub ColumnDisplayIndexChanged1(ByVal sender As Object, ByVal e As DataGridViewColumnEventArgs) Try If grd2.Columns(e.Column.Name).DisplayIndex e.Column.DisplayIndex Then grd2.Columns(e.Column.Name).DisplayIndex = e.Column.DisplayIndex End If Catch ex As Exception MessageBox.Show(ex.ToString) End Try End Sub Public Sub Scroll1(ByVal sender As Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Try If grd2.HorizontalScrollingOffset grd1.HorizontalScrollingOffset Then grd2.HorizontalScrollingOffset = grd1.HorizontalScrollingOffset End If Catch ex As Exception MessageBox.Show(ex.ToString) End Try End Sub Public Sub ColumnStateChanged1(ByVal sender As Object, ByVal e As DataGridViewColumnStateChangedEventArgs) Try Select Case e.StateChanged Case DataGridViewElementStates.Frozen If grd2.Columns(e.Column.Name).Frozen e.Column.Frozen Then grd2.Columns(e.Column.Name).Frozen = e.Column.Frozen End If Case DataGridViewElementStates.Resizable If grd2.Columns(e.Column.Name).Resizable e.Column.Resizable Then grd2.Columns(e.Column.Name).Resizable = e.Column.Resizable End If Case DataGridViewElementStates.Selected If grd2.Columns(e.Column.Name).Selected e.Column.Selected Then grd2.Columns(e.Column.Name).Selected = e.Column.Selected End If Case DataGridViewElementStates.Visible If grd2.Columns(e.Column.Name).Visible e.Column.Visible Then grd2.Columns(e.Column.Name).Visible = e.Column.Visible End If End Select Catch ex As Exception MessageBox.Show(ex.ToString) End Try End Sub Public Sub ColumnWidthChanged2(ByVal sender As Object, ByVal e As DataGridViewColumnEventArgs) Try If grd1.Columns(e.Column.Name).Width e.Column.Width Then grd1.Columns(e.Column.Name).Width = e.Column.Width End If Catch ex As Exception MessageBox.Show(ex.ToString) End Try End Sub Public Sub ColumnDisplayIndexChanged2(ByVal sender As Object, ByVal e As DataGridViewColumnEventArgs) Try If grd1.Columns(e.Column.Name).DisplayIndex e.Column.DisplayIndex Then grd1.Columns(e.Column.Name).DisplayIndex = e.Column.DisplayIndex End If Catch ex As Exception MessageBox.Show(ex.ToString) End Try End Sub Public Sub Scroll2(ByVal sender As Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Try If grd1.HorizontalScrollingOffset grd2.HorizontalScrollingOffset Then grd1.HorizontalScrollingOffset = grd2.HorizontalScrollingOffset End If Catch ex As Exception MessageBox.Show(ex.ToString) End Try End Sub Public Sub ColumnStateChanged2(ByVal sender As Object, ByVal e As DataGridViewColumnStateChangedEventArgs) Try Select Case e.StateChanged Case DataGridViewElementStates.Frozen If grd1.Columns(e.Column.Name).Frozen e.Column.Frozen Then grd1.Columns(e.Column.Name).Frozen = e.Column.Frozen End If Case DataGridViewElementStates.Resizable If grd1.Columns(e.Column.Name).Resizable e.Column.Resizable Then grd1.Columns(e.Column.Name).Resizable = e.Column.Resizable End If Case DataGridViewElementStates.Selected If grd1.Columns(e.Column.Name).Selected e.Column.Selected Then grd1.Columns(e.Column.Name).Selected = e.Column.Selected End If Case DataGridViewElementStates.Visible If grd1.Columns(e.Column.Name).Visible e.Column.Visible Then grd1.Columns(e.Column.Name).Visible = e.Column.Visible End If End Select Catch ex As Exception MessageBox.Show(ex.ToString) End Try End Sub Public Sub Remove() Try RemoveHandler grd1.ColumnWidthChanged, AddressOf ColumnWidthChanged1 RemoveHandler grd1.ColumnDisplayIndexChanged, AddressOf ColumnDisplayIndexChanged1 RemoveHandler grd1.Scroll, AddressOf Scroll1 RemoveHandler grd1.ColumnStateChanged, AddressOf ColumnStateChanged1 RemoveHandler grd2.ColumnWidthChanged, AddressOf ColumnWidthChanged2 RemoveHandler grd2.ColumnDisplayIndexChanged, AddressOf ColumnDisplayIndexChanged2 RemoveHandler grd2.Scroll, AddressOf Scroll2 RemoveHandler grd2.ColumnStateChanged, AddressOf ColumnStateChanged2 Catch ex As Exception MessageBox.Show(ex.ToString) End Try End Sub End Class comment このページの記述で聞きたいこととか間違ってることとかありましたらコメントを。 名前 コメント すべてのコメントを見る
https://w.atwiki.jp/plalayout/pages/204.html
木製レールとプラレールを混ぜたレイアウト
https://w.atwiki.jp/plalayout/pages/205.html
木製レールのレイアウト IKEAのレールにアマニオイルを塗りこんだら、茶色のいい感じの色になりました。 右上の手足は息子のです。