using System;
using System.Data;
using System.IO;
using System.Media;
using System.Windows.Forms;
namespace WindowsMedia
{
public partial class FormXML : Form
{
private DataTable table;
public FormXML()
{
#region
InitializeComponent();
this.StartPosition = FormStartPosition.CenterScreen;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.ShowInTaskbar = false;
gridViewXML.AllowUserToAddRows = true; // 隐藏添加行。
gridViewXML.AllowUserToDeleteRows = false; // 禁用删除行。
gridViewXML.AllowUserToOrderColumns = false; // 禁用列排序。
gridViewXML.MultiSelect = false; // 仅选择一个单元格。
gridViewXML.ReadOnly = false; // 启用编辑单元格。
gridViewXML.EditMode = DataGridViewEditMode.EditProgrammatically; // 仅在调用 BeginEdit() 时开始编辑。
gridViewXML.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing; // 禁用调整列标头的宽度。
gridViewXML.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells; // 自动调整行高。
gridViewXML.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells; // 自动调整列宽。
gridViewXML.SelectionMode = DataGridViewSelectionMode.FullRowSelect; // 选定整个行。
table = new DataTable("Online");
table.Locale = System.Globalization.CultureInfo.InvariantCulture;
DataColumn column = table.Columns.Add("TV", typeof(string));
table.Columns.Add("MMS", typeof(string));
table.Constraints.Add("PK", column, true);
FileInfo info = new FileInfo(Path.Combine(Application.StartupPath, "TV.xml"));
if (info.Exists)
using (StreamReader reader = info.OpenText())
{
table.BeginLoadData();
table.ReadXml(reader);
table.EndLoadData();
table.AcceptChanges();
gridViewXML.DataSource = table.DefaultView;
}
#endregion
}
#region URL
private void gridViewXML_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
if (-1 < e.RowIndex && e.RowIndex < gridViewXML.NewRowIndex)
{
AxWMPLib.AxWindowsMediaPlayer axWMPlayer = this.Tag as AxWMPLib.AxWindowsMediaPlayer;
axWMPlayer.close();
axWMPlayer.URL = gridViewXML[1, e.RowIndex].Value as string;
this.Owner.Text = gridViewXML[0, e.RowIndex].Value as string;
}
}
#endregion
#region DataError
private void gridViewXML_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
MessageBox.Show(e.Exception.Message);
e.ThrowException = false; // 不引发异常。
}
#endregion
#region AddData
private void toolButtonAdd_Click(object sender, EventArgs e)
{
if (gridViewXML.IsCurrentRowDirty)
{
SystemSounds.Beep.Play();
return;
}
gridViewXML.FirstDisplayedScrollingRowIndex = gridViewXML.NewRowIndex;
gridViewXML.CurrentCell = gridViewXML[0, gridViewXML.NewRowIndex];
gridViewXML.BeginEdit(false);
}
#endregion
#region EditData
private void toolButtonEdit_Click(object sender, EventArgs e)
{
if (gridViewXML.CurrentCellAddress.Y > -1)
{
gridViewXML.FirstDisplayedScrollingRowIndex = gridViewXML.CurrentCellAddress.Y;
gridViewXML.BeginEdit(true);
}
}
private void gridViewXML_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (Convert.IsDBNull(gridViewXML.CurrentCell.Value))
{
DataRowView rowView = gridViewXML.CurrentRow.DataBoundItem as DataRowView;
if (rowView != null && !rowView.IsNew)
rowView.Row.RejectChanges();
}
}
#endregion
#region DeleteData
private void toolButtonDelete_Click(object sender, EventArgs e)
{
int index = gridViewXML.CurrentCellAddress.Y;
if (index < 0)
return;
if (gridViewXML.IsCurrentRowDirty || gridViewXML.NewRowIndex == index)
{
SystemSounds.Beep.Play();
return;
}
if (MessageBox.Show(string.Format("确实要删除“{0}”吗?", gridViewXML[0, index].Value), "系统提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
gridViewXML.Rows.RemoveAt(index);
}
#endregion
#region SaveData
private void toolButtonSave_Click(object sender, EventArgs e)
{
if (gridViewXML.IsCurrentRowDirty || gridViewXML.NewRowIndex == gridViewXML.CurrentCellAddress.Y)
{
SystemSounds.Beep.Play();
return;
}
FileInfo info = new FileInfo(Path.Combine(Application.StartupPath, "TV.xml"));
if (info.Exists)
info.Attributes = FileAttributes.Normal;
using (StreamWriter writer = info.CreateText())
{
table.AcceptChanges();
table.WriteXml(writer, XmlWriteMode.IgnoreSchema);
}
}
#endregion
}
}