MSFlexGrid 實現不連續選擇單元格和實現保存MSFlexGrid數據到.DAT文件,並能從.DAT讀出
找個好久,發現MSFlexGrid不能實現這個功能,只好自己寫代碼來實現,如果您有更好的方法請與我聯繫。
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace BitmapRegion
{
public partial class Form2 : Form
{
private bool[,] cellselected = new bool[3, 16];
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
this.axMSFlexGrid1.ClickEvent += new EventHandler(axMSFlexGrid1_ClickEvent);
axMSFlexGrid1.Rows = 3;
readtodat(axMSFlexGrid1);
}
/// <summary>
/// 獲得選中單元格
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
this.Text = "";
for (int i = 0; i < 3; i++)
for (int j = 0; j < 16; j++)
{
if (cellselected[i, j] == true)
this.Text += i.ToString() + j.ToString() + " ";
}
}
/// <summary>
/// 取消單元格的選中狀態
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
for (int i = 1; i < 3; i++)
for (int j = 1; j < 16; j++)
{
cellselected[i, j] = false;
axMSFlexGrid1.Row = i;
axMSFlexGrid1.Col = j;
axMSFlexGrid1.CellBackColor = Color.White;
axMSFlexGrid1.CellForeColor = Color.Black;
}
this.Text = "";
}
/// <summary>
/// 從文本中將數據讀出到msflexgrid
/// </summary>
/// <param name="flex"></param>
void readtodat(AxMSFlexGridLib.AxMSFlexGrid flex)
{
FileStream mystream = new FileStream("C:/設備配置/a.dat", FileMode.Open);
StreamReader Mywriter = new StreamReader(mystream, Encoding.Default);
string text = Mywriter.ReadToEnd();
string[] text1 = text.Split(' ');
for (int i = 0; i < axMSFlexGrid1.Rows * axMSFlexGrid1.Cols; i++)
axMSFlexGrid1.set_TextArray(i, text1[i]);
this.Text = axMSFlexGrid1.Text;
Mywriter.Close();
mystream.Close();
}
/// <summary>
/// 將msflexgrid的數據讀出到.dat文本
/// </summary>
/// <param name="flex"></param>
void outtodat(AxMSFlexGridLib.AxMSFlexGrid flex)
{
FileStream mystream = new FileStream("C:/設備配置/a.dat", FileMode.OpenOrCreate);
StreamWriter Mywriter = new StreamWriter(mystream, Encoding.Default);
string text = "";
for (int i = 0; i < axMSFlexGrid1.Rows; i++)
for (int j = 0; j < axMSFlexGrid1.Cols; j++)
text += flex.get_TextMatrix(i, j) + " ";
Mywriter.Write(text);
Mywriter.Close();
mystream.Close();
}
/// <summary>
/// 實現msflexgrid 的不連續選擇單元格
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void axMSFlexGrid1_ClickEvent(object sender, EventArgs e)
{
if (axMSFlexGrid1.MouseCol != 0 && axMSFlexGrid1.MouseRow != 0 && axMSFlexGrid1.get_TextMatrix(axMSFlexGrid1.Row, axMSFlexGrid1.Col) != "")
{
if (axMSFlexGrid1.CellBackColor == Color.Blue)
{
axMSFlexGrid1.RowSel = axMSFlexGrid1.Row;
axMSFlexGrid1.ColSel = axMSFlexGrid1.Col;
axMSFlexGrid1.CellBackColor = Color.White;
axMSFlexGrid1.CellForeColor = Color.Black;
cellselected[axMSFlexGrid1.Row, axMSFlexGrid1.Col] = false;
}
else
{
axMSFlexGrid1.RowSel = axMSFlexGrid1.Row;
axMSFlexGrid1.ColSel = axMSFlexGrid1.Col;
axMSFlexGrid1.CellBackColor = Color.Blue;
axMSFlexGrid1.CellForeColor = Color.White;
cellselected[axMSFlexGrid1.Row, axMSFlexGrid1.Col] = true;
}
}
}
}
}