MESCIUS SPREAD for Windows Forms 15.0J
外部変数のテキストボックスコントロールでの使用

次のサンプルコードは、外部変数を作成し、標準のテキストボックスコントロールで使用する方法を示します。

サンプルコードの内容は次のとおりです。

C#
コードのコピー
// 外部変数を作成および定義します。
public class TextBoxExternalVariable : ExternalVariable
{
    private TextBox _textBox;
    private bool _asInput;
    public TextBoxExternalVariable(TextBox textBox, bool asInput)
    {
        _textBox = textBox;
        if (asInput)
        {
            AddHandler textBox.TextChanged, AddressOf TextBox_TextChanged
        }
    }
    private void TextBox_TextChanged(object sender, EventArgs e)
    {
        Dirty();
    }
   
    protected override bool OnDirtying()
    {
        return !_asInput;
    }
  
    protected override void OnDirtied()
    {
        Refresh();
    }
   
    protected override void EvaluateCore(IEvaluationContext context,
     IValue result)
    {
        string text = _textBox.Text;
        if (!string.IsNullOrEmpty(text) && double.TryParse(text,
             out double dblValue))
        {
            result.SetValue(dblValue);
        }
        else
        {
            result.SetValue(text);
        }
    }
   
    public void Refresh()
    {
        if (!_asInput)
        {
            _textBox.Text = this.Value.GetText();
        }
    }
} 
// 外部変数をテキストボックスコントロールで使用します。
private void Form2_Load(object sender, EventArgs e)
{
 var workbook = fpSpread1.AsWorkbook();
 var activeSheet = workbook.ActiveSheet;
 activeSheet.Cells["A1"].Value = "Factor";
 activeSheet.Cells["B1"].Value = 2;
   
 // textbox1を参照する外部変数「x」を追加します。
 workbook.Names.AddExternalVariable("x",
 new TextBoxExternalVariable(textBox1, true));
   
 // textbox2を参照する外部変数「y」、および数式「Sheet1!B1 * x」を追加します。
 var extVariable2 = new TextBoxExternalVariable(textBox2, false);
 workbook.Names.AddExternalVariable("y", extVariable2, "Sheet1!B1 * x");
 extVariable2.Refresh();
} 

VB
コードのコピー
Public Class TextBoxExternalVariable
    

Inherits ExternalVariable
 Private _textBox As TextBox
 Private _asInput As Boolean
 Public Sub New(ByVal textBox As TextBox, ByVal asInput As Boolean)
     _textBox = textBox
     If asInput Then
         AddHandler textBox.TextChanged, AddressOf TextBox_TextChanged
     End If
 End Sub

Private Sub TextBox_TextChanged(ByVal sender As Object, ByVal e As EventArgs)
     Dirty()
 End Sub

Protected Overrides Function OnDirtying() As Boolean
     Return Not _asInput
 End Function
    

Protected Overrides Sub OnDirtied()
     Refresh()
 End Sub

Protected Overrides Sub EvaluateCore(ByVal context As IEvaluationContext, ByVal result As IValue)
     Dim text As String = _textBox.Text
     Dim dblValue As Double = Nothing

If Not String.IsNullOrEmpty(text) AndAlso Double.TryParse(text, dblValue) Then
     result.SetValue(dblValue)
 Else
     result.SetValue(text)
 End If
 End Sub

Public Sub Refresh()
     If Not _asInput Then

_textBox.Text = Me.Value.GetText()
 End If
 End Sub
 End Class    

 

' 外部変数をテキストボックスコントロールで使用します。

Private Sub Form2_Load(ByVal sender As Object, ByVal e As EventArgs)
     Dim workbook = fpSpread1.AsWorkbook()
     Dim activeSheet = workbook.ActiveSheet
     activeSheet.Cells("A1").Value = "Factor"
     activeSheet.Cells("B1").Value = 2
     workbook.Names.AddExternalVariable("x", New TextBoxExternalVariable(textBox1, True))
    Dim extVariable2 = New TextBoxExternalVariable(textBox2, False)
     workbook.Names.AddExternalVariable("y", extVariable2, "Sheet1!B1 * x")
     extVariable2.Refresh()
 End Sub

 

 


© MESCIUS inc. All rights reserved.