MESCIUS SPREAD for Windows Forms 17.0J サンプルコード集 > 操作 > セル > エラーアイコンを表示する |
行/セルにエラーアイコンを表示するには、ShowRowErrors/ShowCellErrorsプロパティをTrueにします。その上で、DataRow.RowErrorプロパティおよびDataRow.SetColumnErrorメソッドを使い、DataRowオブジェクトに対してエラーを設定します。また、このサンプルでは独自の画像をエラーアイコンとして使用しています。
private DataSet DS; private void Form1_Load(object sender, EventArgs e) { // データセットを作成します DS = new DataSet(); DataTable DT = new DataTable(); DT = DS.Tables.Add("SampleTable"); DT.Columns.AddRange(new DataColumn[] { new DataColumn("ID", Type.GetType("System.Int32")), new DataColumn("Text", Type.GetType("System.String")), new DataColumn("Check", Type.GetType("System.Boolean")) }); DT.Rows.Add(new Object[] { 10, "Text-10", true }); DT.Rows.Add(new Object[] { -1, "Text-20", false }); DT.Rows.Add(new Object[] { 30, "Text-30", false }); DT.Rows.Add(new Object[] { 20, "Text-40", true }); DT.Rows.Add(new Object[] { 50, "Text-50", true }); // データセットを接続します fpSpread1.DataSource = DS.Tables[0]; // 行とセルのエラー表示を有効 fpSpread1.ShowRowErrors = true; fpSpread1.ShowCellErrors = true; // カスタムアイコンの使用 fpSpread1.GetRootWorkbook().ErrorIconRenderer = new CustomErrorIconRenderer(); } private void button1_Click(object sender, EventArgs e) { for (Int32 i = 0; i < fpSpread1.ActiveSheet.RowCount; i++) { if ((int)fpSpread1.ActiveSheet.GetValue(i, 0) == -1) { // 行のエラーテキストを設定 DS.Tables[0].Rows[i].RowError = "行のエラー"; // セルのエラーテキストを設定 DS.Tables[0].Rows[i].SetColumnError(0, "セルのエラー"); } } }
Private DS As DataSet Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load ' データセットを作成します DS = New DataSet() Dim DT As New DataTable DT = DS.Tables.Add("SampleTable") DT.Columns.AddRange(New DataColumn() { _ New DataColumn("ID", Type.GetType("System.Int32")), _ New DataColumn("Text", Type.GetType("System.String")), _ New DataColumn("Check", Type.GetType("System.Boolean")) _ }) DT.Rows.Add(New Object() {10, "Text-10", True}) DT.Rows.Add(New Object() {-1, "Text-20", False}) DT.Rows.Add(New Object() {30, "Text-30", False}) DT.Rows.Add(New Object() {20, "Text-40", True}) DT.Rows.Add(New Object() {50, "Text-50", True}) ' データセットを接続します FpSpread1.DataSource = DS.Tables(0) ' 行とセルのエラー表示を有効 FpSpread1.ShowRowErrors = True FpSpread1.ShowCellErrors = True ' カスタムアイコンの使用 FpSpread1.GetRootWorkbook().ErrorIconRenderer = New CustomErrorIconRenderer() End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click For i As Integer = 0 To FpSpread1.ActiveSheet.RowCount - 1 If FpSpread1.ActiveSheet.GetValue(i, 0) = -1 Then ' 行のエラーテキストを設定 DS.Tables(0).Rows(i).RowError = "行のエラー" ' セルのエラーテキストを設定 DS.Tables(0).Rows(i).SetColumnError(0, "セルのエラー") End If Next End Sub
[Serializable()] public class CustomErrorIconRenderer : FarPoint.Win.Spread.IErrorIconRenderer { public void Paint(Graphics g, Rectangle rectPaint) { Icon errorIcon = new Icon("..\\..\\Icon1.ico"); g.DrawIcon(errorIcon, rectPaint); } #region "IDisposable Support" // 重複する呼び出しを検出するには private bool disposedValue; // IDisposable protected virtual void Dispose(bool disposing) { if (!this.disposedValue) { if (disposing) { // TODO: マネージ状態を破棄します (マネージ オブジェクト)。 } // TODO: アンマネージ リソース (アンマネージ オブジェクト) を解放し、下の Finalize() をオーバーライドします。 // TODO: 大きなフィールドを null に設定します。 } this.disposedValue = true; } // TODO: 上の Dispose(ByVal disposing As Boolean) にアンマネージ リソースを解放するコードがある場合にのみ、Finalize() をオーバーライドします。 //Protected Overrides Sub Finalize() // ' このコードを変更しないでください。クリーンアップ コードを上の Dispose(ByVal disposing As Boolean) に記述します。 // Dispose(False) // MyBase.Finalize() //End Sub // このコードは、破棄可能なパターンを正しく実装できるように Visual Basic によって追加されました。 public void Dispose() { // このコードを変更しないでください。クリーンアップ コードを上の Dispose(disposing As Boolean) に記述します。 Dispose(true); GC.SuppressFinalize(this); } #endregion }
<Serializable()> Public Class CustomErrorIconRenderer Implements FarPoint.Win.Spread.IErrorIconRenderer Public Sub Paint(g As Graphics, rectPaint As Rectangle) Implements FarPoint.Win.Spread.IErrorIconRenderer.Paint Dim errorIcon As New Icon("..\..\Icon1.ico") g.DrawIcon(errorIcon, rectPaint) End Sub #Region "IDisposable Support" Private disposedValue As Boolean ' 重複する呼び出しを検出するには ' IDisposable Protected Overridable Sub Dispose(disposing As Boolean) If Not Me.disposedValue Then If disposing Then ' TODO: マネージ状態を破棄します (マネージ オブジェクト)。 End If ' TODO: アンマネージ リソース (アンマネージ オブジェクト) を解放し、下の Finalize() をオーバーライドします。 ' TODO: 大きなフィールドを null に設定します。 End If Me.disposedValue = True End Sub ' TODO: 上の Dispose(ByVal disposing As Boolean) にアンマネージ リソースを解放するコードがある場合にのみ、Finalize() をオーバーライドします。 'Protected Overrides Sub Finalize() ' ' このコードを変更しないでください。クリーンアップ コードを上の Dispose(ByVal disposing As Boolean) に記述します。 ' Dispose(False) ' MyBase.Finalize() 'End Sub ' このコードは、破棄可能なパターンを正しく実装できるように Visual Basic によって追加されました。 Public Sub Dispose() Implements IDisposable.Dispose ' このコードを変更しないでください。クリーンアップ コードを上の Dispose(disposing As Boolean) に記述します。 Dispose(True) GC.SuppressFinalize(Me) End Sub #End Region End Class