using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.Collections;
using System.Drawing.Printing;
using System.Diagnostics;
namespace kadai
{
public partial class FrmList : Form
{
private XmlNodeList m_xNodeList = null;
private string m_sFilePath = "";
XmlDocument document = new XmlDocument();
public FrmList()
{
InitializeComponent();
}
private void FrmMain_Load(object sender, EventArgs e)
{
InitialForm();
InitialListView();
InitialControl();
EnableControl(false);
}
private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show(
"終了してもよろしいですか?",
"確認メッセージ",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question,
MessageBoxDefaultButton.Button2
) == DialogResult.No)
{
e.Cancel = true;
}
}
private void InitialControl()
{
CmbCoupon.Items.Add("○");
CmbCoupon.Items.Add("×");
CmbCoupon.Items.Add("不明");
CmbCoupon.DropDownStyle = ComboBoxStyle.DropDownList;
}
private void InitialForm()
{
MaximizeBox = false;
MinimizeBox = false;
FormBorderStyle = FormBorderStyle.FixedSingle | FormBorderStyle.Fixed3D;
}
private void EnableControl(Boolean bFlag)
{
BtnEntryToolStrip.Enabled = bFlag;
BtnUpdateToolStrip.Enabled = bFlag;
BtnDeletetoolStrip.Enabled = bFlag;
BtnSearchtoolStrip.Enabled = bFlag;
printMenuItem.Enabled = bFlag;
saveMenuItem.Enabled = bFlag;
BtnJamp.Enabled = bFlag;
}
private void InitialListView()
{
listView.FullRowSelect = true;
listView.MultiSelect = false;
listView.View = View.Details;
listView.Columns.Add(new ColHeader("No", 0, HorizontalAlignment.Left, true));
listView.Columns.Add(new ColHeader("名前", 100, HorizontalAlignment.Left, true));
listView.Columns.Add(new ColHeader("ジャンル", 100, HorizontalAlignment.Left, true));
listView.Columns.Add(new ColHeader("URL", 150, HorizontalAlignment.Left, true));
listView.Columns.Add(new ColHeader("クーポン", 50, HorizontalAlignment.Left, true));
listView.Columns.Add(new ColHeader("平均予算", 75, HorizontalAlignment.Right, true));
}
private void listView_SelectedIndexChanged(object sender, EventArgs e)
{
if (listView.SelectedItems.Count == 0)
{
return;
}
ListViewItem item = new ListViewItem();
item = listView.SelectedItems[0];
TxtName.Text = item.SubItems[1].Text;
TxtGroup.Text = item.SubItems[2].Text;
TxtUrl.Text = item.SubItems[3].Text;
CmbCoupon.Text = item.SubItems[4].Text;
TxtBudget.Text = item.SubItems[5].Text;
}
private void listView_ColumnClick(object sender, ColumnClickEventArgs e)
{
ColHeader clickedCol = (ColHeader)listView.Columns[e.Column];
clickedCol.ascending = !clickedCol.ascending;
int nItemCount = listView.Items.Count;
listView.BeginUpdate();
ArrayList SortArray = new ArrayList();
for (int i = 0; i < nItemCount; i++)
{
SortArray.Add(new SortWrapper(listView.Items[i], e.Column));
}
SortArray.Sort(0, SortArray.Count, new SortWrapper.SortComparer(clickedCol.ascending));
listView.Items.Clear();
for (int i = 0; i < nItemCount; i++)
{
listView.Items.Add(((SortWrapper)SortArray[i]).sortItem);
}
listView.EndUpdate();
}
private void GetXmlData4List()
{
m_xNodeList = document.SelectNodes("Members/Member");
for (int i = 0; i < m_xNodeList.Count; i++)
{
string[] sItem = {
i.ToString(),
m_xNodeList.Item(i).SelectSingleNode("Name").InnerText,
m_xNodeList.Item(i).SelectSingleNode("Group").InnerText,
m_xNodeList.Item(i).SelectSingleNode("Url").InnerText,
m_xNodeList.Item(i).SelectSingleNode("Coupon").InnerText,
m_xNodeList.Item(i).SelectSingleNode("Budget").InnerText
};
listView.Items.Add(new ListViewItem(sItem));
}
}
private void fileMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Title = "ファイル選択ダイアログ";
openFileDialog.Filter = "データファイル|*.xml";
openFileDialog.RestoreDirectory = true;
openFileDialog.Multiselect = true;
openFileDialog.RestoreDirectory = true;
openFileDialog.ShowHelp = true;
openFileDialog.ShowReadOnly = true;
openFileDialog.ReadOnlyChecked = true;
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
m_sFilePath = openFileDialog.FileName;
document.Load(m_sFilePath);
listView.Items.Clear();
GetXmlData4List();
EnableControl(true);
}
}
private void saveMenuItem_Click(object sender, EventArgs e)
{
document.Save(m_sFilePath);
}
private void printMenuItem_Click(object sender, EventArgs e)
{
}
private void clsMenuItem_Click(object sender, EventArgs e)
{
CloseAction();
}
private void BtnEntryToolStrip_Click(object sender, EventArgs e)
{
EntryAction();
}
private void BtnUpdateToolStrip_Click(object sender, EventArgs e)
{
UpdateAction();
}
private void BtnDeletetoolStrip_Click(object sender, EventArgs e)
{
DeleteAction();
}
private void BtnSearchtoolStrip_Click(object sender, EventArgs e)
{
SearchAction();
}
private void EntryAction()
{
listView.Items.Clear();
m_xNodeList.Item(0).ParentNode.AppendChild(CreateElementMember());
GetXmlData4List();
}
private XmlElement CreateElementMember()
{
XmlElement member = document.CreateElement("Member");
XmlElement name = document.CreateElement("Name");
XmlElement group = document.CreateElement("Group");
XmlElement coupon = document.CreateElement("Coupon");
XmlElement url = document.CreateElement("Url");
XmlElement budget = document.CreateElement("Budget");
XmlText xTxtName = document.CreateTextNode(TxtName.Text);
XmlText xTxtGroup = document.CreateTextNode(TxtGroup.Text);
XmlText xTxtUrl = document.CreateTextNode(TxtUrl.Text);
XmlText xTxtCoupon = document.CreateTextNode(CmbCoupon.Text);
XmlText xTxtBudget = document.CreateTextNode(TxtBudget.Text);
name.AppendChild(xTxtName);
group.AppendChild(xTxtGroup);
coupon.AppendChild(xTxtCoupon);
url.AppendChild(xTxtUrl);
budget.AppendChild(xTxtBudget);
member.AppendChild(name);
member.AppendChild(group);
member.AppendChild(url);
member.AppendChild(coupon);
member.AppendChild(budget);
return member;
}
private void UpdateAction()
{
if (listView.SelectedItems.Count == 0)
{
MessageBox.Show("選択しているデータがありません。");
return;
}
int itemCount = int.Parse(listView.SelectedItems[0].SubItems[0].Text);
listView.Items.Clear();
m_xNodeList.Item(itemCount).SelectSingleNode("Name").InnerText = TxtName.Text;
m_xNodeList.Item(itemCount).SelectSingleNode("Group").InnerText = TxtGroup.Text;
m_xNodeList.Item(itemCount).SelectSingleNode("Url").InnerText = TxtUrl.Text;
m_xNodeList.Item(itemCount).SelectSingleNode("Coupon").InnerText = CmbCoupon.Text;
m_xNodeList.Item(itemCount).SelectSingleNode("Budget").InnerText = TxtBudget.Text;
GetXmlData4List();
listView.Items[itemCount].Selected = true;
listView.EnsureVisible(itemCount);
}
private void DeleteAction()
{
if (listView.SelectedItems.Count == 0)
{
MessageBox.Show("選択しているデータがありません。");
return;
}
if (MessageBox.Show(
"削除してもよろしいですか?",
"確認メッセージ",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question,
MessageBoxDefaultButton.Button2
) != DialogResult.Yes)
{
return;
}
int itemCount = int.Parse(listView.SelectedItems[0].SubItems[0].Text);
listView.Items.Clear();
m_xNodeList.Item(0).ParentNode.RemoveChild(m_xNodeList.Item(itemCount));
InitalEntryControl();
GetXmlData4List();
}
private void SearchAction()
{
listView.Items.Clear();
if (TxtSearch.Text.Equals(""))
{
m_xNodeList = document.SelectNodes("Members/Member");
}
else
{
m_xNodeList = document.SelectNodes("Members/Member[./Group='" + TxtSearch.Text + "']");
}
for (int i = 0; i < m_xNodeList.Count; i++)
{
string[] sItem = {
m_xNodeList.Item(i).SelectSingleNode("Name").InnerText,
m_xNodeList.Item(i).SelectSingleNode("Group").InnerText,
m_xNodeList.Item(i).SelectSingleNode("Url").InnerText,
m_xNodeList.Item(i).SelectSingleNode("Coupon").InnerText,
m_xNodeList.Item(i).SelectSingleNode("Budget").InnerText
};
listView.Items.Add(new ListViewItem(sItem));
}
}
private void InitalEntryControl()
{
TxtName.Text = "";
TxtGroup.Text = "";
TxtUrl.Text = "";
}
private void CloseAction()
{
Close();
}
private void btnJamp_Click(object sender, EventArgs e)
{
if (!TxtUrl.Text.Equals(""))
{
System.Diagnostics.Process.Start(TxtUrl.Text);
}
}
}
}
最終更新:2009年04月09日 15:31