📄 form1.cs
字号:
Label lbMatrixB = new System.Windows.Forms.Label();
lbMatrixB.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
// row B = col A
int lbMatrixBlength = (m_numColMatrixBTextBox)*(m_tbLength+2) - 2; ;
lbMatrixB.Location = new System.Drawing.Point(m_startPointMatrixB.X, m_startPoint.Y - 40);
lbMatrixB.Size = new System.Drawing.Size(lbMatrixBlength, 28);
lbMatrixB.Name = "lbMatrixB";
lbMatrixB.Text = "Matrix B";
lbMatrixB.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.Controls.Add(lbMatrixB) ;
}
public void SetLabelMatrixC()
{
Label lbMatrixC = new System.Windows.Forms.Label();
lbMatrixC.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
// row B = col A
int lbMatrixClength = (m_numColMatriCTextBox)*(m_tbLength+2) - 2; ;
lbMatrixC.Location = new System.Drawing.Point(m_startPointMatrixC.X, m_startPointMatrixC.Y - 40);
lbMatrixC.Size = new System.Drawing.Size(lbMatrixClength, 28);
lbMatrixC.Name = "lbMatrixC";
lbMatrixC.Text = "Matrix C";
lbMatrixC.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.Controls.Add(lbMatrixC) ;
}
public void SetTextBoxMatrixB()
{
for(int i=0; i<m_numRowMatrixBTextBox; i++)
{
for(int j=0; j<m_numColMatrixBTextBox; j++)
{
arrTextBoxMatrixB[i,j] = new System.Windows.Forms.TextBox();
arrTextBoxMatrixB[i,j].Location = new System.Drawing.Point(m_startPointMatrixB.X + (m_tbLength+2)*j, m_startPointMatrixB.Y + (m_tbHeight+2)*i );
arrTextBoxMatrixB[i,j].Name = "textBox2";
arrTextBoxMatrixB[i,j].Size = new System.Drawing.Size(m_tbLength, m_tbHeight);
arrTextBoxMatrixB[i,j].TabIndex = i;
arrTextBoxMatrixB[i,j].Text = "0.0";
this.Controls.Add(arrTextBoxMatrixB[i,j]) ;
}
}
}
public void SetTextBoxMatrixC()
{
//TextBox[,] arrTextBoxMatrixC = new TextBox[m_numRowMatriCTextBox, m_numColMatriCTextBox] ;
for(int i=0; i<m_numRowMatriCTextBox; i++)
{
for(int j=0; j<m_numColMatriCTextBox; j++)
{
arrTextBoxMatrixC[i,j] = new System.Windows.Forms.TextBox();
arrTextBoxMatrixC[i,j].Location = new System.Drawing.Point(m_startPointMatrixC.X + (m_tbLength+2)*j, m_startPointMatrixC.Y + (m_tbHeight+2)*i );
arrTextBoxMatrixC[i,j].Name = "textBox2";
arrTextBoxMatrixC[i,j].Size = new System.Drawing.Size(m_tbLength, m_tbHeight);
arrTextBoxMatrixC[i,j].TabIndex = i;
arrTextBoxMatrixC[i,j].Text = "0.0";
arrTextBoxMatrixC[i,j].ReadOnly = true;
this.Controls.Add(arrTextBoxMatrixC[i,j]) ;
}
}
}
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void btSetNumber_Click(object sender, System.EventArgs e)
{
int rowA ;
int colA ;
int rowB ;
int colB ;
try
{
rowA = Convert.ToInt32(tbMatrixA_row.Text);
colA = Convert.ToInt32(tbMatrixA_col.Text);
rowB = Convert.ToInt32(tbMatrixB_row.Text);
colB = Convert.ToInt32(tbMatrixB_col.Text);
}
catch
{
MessageBox.Show("Please enter the number") ;
return ;
}
m_numRowMatricATextBox = rowA ;
m_numColMatricATextBox = colA ;
m_numRowMatrixBTextBox = m_numColMatricATextBox ;
m_numColMatrixBTextBox = colB ;
m_numRowMatriCTextBox = m_numRowMatricATextBox ;
m_numColMatriCTextBox = m_numColMatrixBTextBox ;
SetProperty() ;
}
public void SetProperty()
{
this.Controls.Clear() ;
m_tbLength = 38 ;
m_tbHeight = 20 ;
int adistance = 50 ;
// = length of A + a distance
m_startPointMatrixB.X = m_startPoint.X + (m_numColMatricATextBox)*(m_tbLength+2) - 2 + adistance ;
m_startPointMatrixB.Y = m_startPoint.Y ;
int lbMatrixBlength = (m_numColMatrixBTextBox)*(m_tbLength+2) - 2;
m_startPointMatrixC.X = m_startPoint.X ;
int aheight_A = m_startPoint.Y + (m_numRowMatricATextBox)*(m_tbHeight+2)+ 3*adistance ;
int aheight_B = m_startPoint.Y + (m_numRowMatrixBTextBox)*(m_tbHeight+2)+ 3*adistance ;
int aheight = Math.Max(aheight_A, aheight_B) ;
m_startPointMatrixC.Y = aheight ;
// reset form size
InitializeComponent();
tbMatrixA_row.Text = m_numRowMatricATextBox.ToString() ;
tbMatrixA_col.Text = m_numColMatricATextBox.ToString() ;
tbMatrixB_row.Text = m_numRowMatrixBTextBox.ToString() ;
tbMatrixB_col.Text = m_numColMatrixBTextBox.ToString() ;
m_numRowMatriCTextBox = m_numRowMatricATextBox ;
m_numColMatriCTextBox = m_numColMatrixBTextBox ;
SetLabelMatrixA() ;
SetLabelMatrixB() ;
SetLabelMatrixC() ;
// set calculation button
this.btCalculation.Location = new System.Drawing.Point(m_startPoint.X, aheight - 100);
SetTextBoxMatrixA() ;
SetTextBoxMatrixB() ;
SetTextBoxMatrixC() ;
m_FormLength = m_startPointMatrixB.X + lbMatrixBlength + adistance ;
m_FormHeight = m_startPointMatrixC.Y + m_numRowMatriCTextBox*(m_tbHeight+2) + adistance;
m_FormLength = Math.Max(544, m_FormLength) ;
this.ClientSize = new System.Drawing.Size(m_FormLength, m_FormHeight);
this.Refresh() ;
}
private void btCalculation_Click(object sender, System.EventArgs e)
{
try
{
GetMatrixA() ;
GetMatrixB() ;
GetMatrixC() ;
}
catch
{
MessageBox.Show("You haven't enter wrong data") ;
}
}
public void GetMatrixA()
{
int rowA, colA ;
try
{
rowA = Convert.ToInt32(tbMatrixA_row.Text);
colA = Convert.ToInt32(tbMatrixA_col.Text);
}
catch
{
MessageBox.Show("Please enter the number") ;
return ;
}
int i, j ;
try
{
for( i=0; i<m_numRowMatricATextBox; i++)
{
for( j=0; j<m_numColMatricATextBox; j++)
{
db_MatrixA[i,j] = Convert.ToDouble(arrTextBoxMatrixA[i,j].Text) ;
}
}
}
catch
{
MessageBox.Show("Please enter the number in Matrix A") ;
return ;
}
}
public void GetMatrixB()
{
int rowB, colB ;
try
{
rowB = Convert.ToInt32(tbMatrixB_row.Text);
colB = Convert.ToInt32(tbMatrixB_col.Text);
}
catch
{
MessageBox.Show("Please enter the number") ;
return ;
}
int i, j ;
try
{
for( i=0; i<m_numRowMatrixBTextBox; i++)
{
for( j=0; j<m_numColMatrixBTextBox; j++)
{
db_MatrixB[i,j] = Convert.ToDouble(arrTextBoxMatrixB[i,j].Text) ;
}
}
}
catch
{
MessageBox.Show("Please enter the number in Matrix B") ;
return ;
}
}
public void GetMatrixC()
{
// calculate matrix multiplication
/* declare mxArray variables */
IntPtr mx_A = (IntPtr)null ;
IntPtr mx_B = (IntPtr)null ;
IntPtr mx_C = (IntPtr)null ;
/* convert C# matrix to mxArray */
mx_A = MatlabCSharp.double2mxArray_matrixReal(db_MatrixA) ;
mx_B = MatlabCSharp.double2mxArray_matrixReal(db_MatrixB) ;
/* call an implemental function */
mlfMymtimes(1, ref mx_C, mx_A, mx_B );
/* convert back to C# double */
db_MatrixC = MatlabCSharp.mxArray2double_matrixReal(mx_C) ;
// display to GUI
int i, j ;
for( i=0; i<m_numRowMatriCTextBox; i++)
{
for( j=0; j<m_numColMatriCTextBox; j++)
{
arrTextBoxMatrixC[i,j].Text = db_MatrixC[i,j].ToString() ;
}
}
MessageBox.Show("It has done") ;
}
private void tbMatrixA_col_TextChanged(object sender, System.EventArgs e)
{
tbMatrixB_row.Text = tbMatrixA_col.Text ;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -